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?