Что такое определение класса верхнего уровня в java?
Я знаю, что это основной вопрос, но я не мог найти ясный и простой ответ на этот вопрос.
Ответ 1
Это просто любой класс, который не является вложенным классом. Если ваш файл Foo.java, а ваш класс Foo, то это класс верхнего уровня.
// in Foo.java:
public class Foo { // top level class
public static class NestedBar { // nested class
}
}
Я всегда считал, что это неофициальный термин, но на самом деле это определенный в JLS:
Класс верхнего уровня - это класс, который не является вложенным классом.
Вложенный класс - это любой класс, чье объявление происходит внутри тела другого класса или интерфейса.
Ответ 2
Вышеприведенное определение верное, возможно, другое определение может быть: класс верхнего уровня - это определенный класс с тем же именем файла ".java", где он находится. Однако, как и наблюдение, для случая было показано, вложенный (не верхний уровень) "статический" класс имеет такое же поведение класса верхнего уровня, что и взаимодействие с членами экземпляра класса, в котором он был вложен.