Java: Как JVM оптимизирует вызов пустой и пустой функции?

Давайте представим, что у нас есть следующие классы:

public class Message extends Object {}

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

и следующая программа:

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

Будет ли компилятор Java вырезать операторыa а такжеb ? В обоих случаях (разбор или не разбор), каково обоснование решения компилятора Java?

Ответы на вопрос(6)

Ваш ответ на вопрос