Ответ 1
Во-первых, вы не можете ставить статический класс верхнего уровня. вы можете сделать только статический класс вложенного класса. Создавая вложенный класс static, вы в основном говорите, что вам не нужен экземпляр вложенного класса для его использования из вашего внешнего класса/класса верхнего уровня.
Пример:
class Outer {
static class nestedStaticClass {
//its member variables and methods (don't nessarily need to be static)
//but cannot access members of the enclosing class
}
public void OuterMethod(){
//can access members of nestedStaticClass w/o an instance
}
}
Кроме того, запрещается объявлять статические поля внутри внутреннего класса, если они не являются константами (другими словами, static final
). Поскольку статический вложенный класс не является внутренним классом, вы можете объявить здесь статические члены.
Может ли класс быть вложенным в вложенный класс?
Одним словом, да. Посмотрите ниже Test
, и вложенные внутренние классы, и вложенный статический класс могут иметь вложенные классы в em. Но помните, что вы можете объявлять только статический класс внутри класса верхнего уровня, это запрещено объявлять внутри внутреннего класса.
public class Test {
public class Inner1 {
public class Inner2 {
public class Inner3 {
}
}
}
public static class nested1 {
public static class nested2 {
public static class nested3 {
}
}
}
}