Вы можете сделать это следующим образом:
public static void main(String[] args) {
System.out.println(new Object() {
int whatever = 1;
}.whatever);
}
То есть вы можете извлекать поля и метод только из непосредственного выражения выражения.[ Редактировать: В комментариях вы можете использовать его там, где компилятор выводит для вас тип - который является выражением экземпляра, или как возвращаемое значение из универсального метода, которому вы передаете его.] Выне может хранить его в переменной и использовать там поля / методы, поэтому он не так полезен, как анонимные классы, например, в C #.
Редактировать: Вы можете, как ранее заявили другие,объявите локальный метод-метод:
public static void main(String[] args) {
class Local {
int whatever = 1;
}
Local local = new Local();
System.out.println(local);
}
Немного многословно, хотя, как и нестатические внутренние классы и обычные анонимные классы, он сохраняет неявную ссылку на включающий this
(в нестатических методах).