Java: ¿Cómo optimizará JVM la llamada a una función vacía y vacía?
Imaginemos que tenemos las siguientes clases:
public class Message extends Object {}
public class Logger implements ILogger {
public void log(Message m) {/*empty*/}
}
y el siguiente programa:
public static void main(String args[]) {
ILogger l = new Logger();
l.log((Message)null); // a)
l.log(new Message()); // b)
}
¿El compilador de Java eliminará las declaraciones?a yb ? En ambos casos (eliminando o no eliminando), ¿cuál es la razón detrás de la decisión del compilador de Java?