Давайте посмотрим на этот пример:
public class MainClass {
public class NonStaticClass {
public static NonStaticClass nonStatic = new NonStaticClass();
//Compile error: The field nonStatic cannot be declared static;
//static fields can only be declared in static or top level types
public static int i = 10;//this field also causes the same compile error
}
}
Проблема в том, что NonStaticClass
, ну, не статично .Нестатический внутренний класс не может содержать статические поля.
Если вы хотите иметь статическое поле во внутреннем классе, вам нужно сделать класс статическим.
Из документации Java:
Внутренние классы
Как и в случае методов и переменных экземпляра, внутренний класс связан с экземпляром своего включающего класса и имеет прямой доступ к методам этого объекта иполя.Кроме того, , поскольку внутренний класс связан с экземпляром, он не может сам определять какие-либо статические члены .
Для получения дополнительной информации см. Вложенные классы