Действительно ли возможно иметь несколько классов в единственном файле Java в Eclipse? Или у меня должен действительно быть каждый в различном файле?
Это - просто что-то наложенное Eclipse, или компилятор Java имеет что-то против наличия всего в том же файле?
Согласно спецификации Java (это не правило Eclipse), вы можете иметь только один публичный класс в файле. Вы можете иметь внутренние классы, или статические классы, в том же файле, что и публичный класс.
Eclipse следует соответствующему стандарту Java: 7.6. Объявления типов верхнего уровня . На верхнем уровне один исходный файл может объявлять любое количество классов, но только один может быть общедоступным. Все остальные имеют доступ к частному пакету .
Вы можете иметь только один класс верхнего уровня или интерфейс, и объявления внутренних классов (статических или иных) внутри него. Это ограничение, пришедшее из Java, а не из Eclipse. На самом деле, редактор C++ для Eclipse без проблем справится с ним для файлов C++.
Вы можете иметь несколько классов в одном файле в Java (это ограничение Java), но в общедоступном файле может быть только один класс, и этот класс должен иметь то же имя, что и файл. Обычно вы помещаете только два класса в один файл, если второй класс предназначен для использования только первым классом или его ближайшими соседями.
Это языковое требование. Единственный способ встроить классы в один файл - это создать внутренние классы.
Фактически это указано в спецификации Java: http://java.sun.com/docs/books/jls/third_edition/html/packages. html # 26783
Если вы хотите, чтобы в одном файле было несколько классов, это должен быть внутренний класс из «верхнего» общедоступного.