Согласно эта таблица приоритетов и ассоциативности Java-операторов, доступ к члену имеет более высокий приоритет, чем оператор new.
Однако, учитывая класс myClass и нестационарную функцию-член myFunction, следующая строка кода действительна:
new myClass().myFunction();
Если . оценивается до new, как эта строка может быть выполнена? Другими словами, почему не нужны скобки?
(new myClass()).myFunction();
Я предполагаю, что, поскольку () имеет приоритет с ., сначала оценивается myClass(), поэтому компилятор знает даже до того, как оценил ключевое слово new, что конструктор myClass с нулевыми параметрами называется. Однако это все еще кажется, что первая строка должна быть идентична new (myClass().myFunction());, что не так.