Java: W jaki sposób JVM zoptymalizuje wywołanie do pustej i pustej funkcji?
Wyobraźmy sobie, że mamy następujące klasy:
public class Message extends Object {}
public class Logger implements ILogger {
public void log(Message m) {/*empty*/}
}
i następujący program:
public static void main(String args[]) {
ILogger l = new Logger();
l.log((Message)null); // a)
l.log(new Message()); // b)
}
Czy kompilator Java usunie instrukcjea ib ? W obu przypadkach (stripping lub nie stripping), jakie jest uzasadnienie decyzji kompilatora Java?