Загадка ошибки компилятора Java: «внутренние классы не могут иметь статические объявления» - за исключением простых типоJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Загадка ошибки компилятора Java: «внутренние классы не могут иметь статические объявления» - за исключением простых типо

Сообщение Anonymous »

Во время написания кода я столкнулся со странным поведением компилятора Java.

При компиляции класса (источник ниже) компилятор выдает ошибку ("inner classes cannot have static declarations") для переменной класса NULL. Это ожидаемо!

Однако в переменной класса ZERO не возникает никаких ошибок. Этого я не понимаю !

Почему эта разница, которая, кажется, позволяет статические объявления простых типов, но не объектов, во внутренних классах.


(javac-версия: 1.6.0_24)


public class Outer {
public static final Runnable HELLO = new Runnable() {
// No compiler error
public static final int ZERO = 0;

// Causes compiler error: "inner classes cannot have static declarations"
public static final Object NULL = null;

@Override
public void run() {
System.out.println("Hello " + ZERO + NULL);
}
};
}


Подробнее здесь: https://stackoverflow.com/questions/125 ... arations-e
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»