Java: Wie optimiert JVM den Aufruf einer ungültigen und leeren Funktion?

Stellen wir uns vor, wir haben folgende Klassen:

public class Message extends Object {}

public class Logger implements ILogger {
 public void log(Message m) {/*empty*/}
}

und das folgende Programm:

public static void main(String args[]) {
  ILogger l = new Logger();
  l.log((Message)null); // a)
  l.log(new Message()); // b)
}

Entfernt der Java-Compiler Anweisungena undb ? Was ist in beiden Fällen (Strippen oder Nicht-Strippen) der Grund für die Entscheidung des Java-Compilers?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage