Возможно ли иметь несколько классов в одном файле в Eclipse? - PullRequest
5 голосов
/ 02 марта 2010

Возможно ли иметь несколько классов в одном Java-файле в Eclipse? Или я действительно должен иметь каждый файл в отдельном файле?

Это просто что-то навязанное Eclipse, или компилятор Java имеет что-то против размещения всего в одном файле?

Ответы [ 6 ]

12 голосов
/ 02 марта 2010

Вы можете иметь только один открытый класс на файл в соответствии со спецификацией Java (это не правило Eclipse). Вы можете иметь внутренние классы или статические классы в одном файле с общедоступным классом.

4 голосов
/ 02 марта 2010

Eclipse следует соответствующему стандарту Java: 7.6. Объявления типов верхнего уровня . На верхнем уровне один исходный файл может объявлять любое количество классов, но только один может быть общедоступным. Любые другие имеют пакет-приват доступ.

2 голосов
/ 02 марта 2010

Вы можете иметь несколько классов в одном файле в Java (это ограничение Java), но в общедоступном файле может быть только один класс, и этот класс должен иметь то же имя, что и файл. Обычно вы помещаете в один файл только два класса, если второй класс предназначен для использования только первым классом или его ближайшими соседями.

1 голос
/ 02 марта 2010

Вы можете иметь только один класс или интерфейс верхнего уровня и объявления внутренних классов (статических или других) внутри него. Это ограничение исходит от Java, а не от Eclipse. Фактически, редактор C ++ для Eclipse не будет иметь проблем с ним для файлов C ++.

0 голосов
/ 02 марта 2010

Это на самом деле в спецификации Java: http://java.sun.com/docs/books/jls/third_edition/html/packages.html#26783

Если вы хотите, чтобы в одном файле было более одного класса, он должен быть внутренним классом из общедоступного верхнего класса.

0 голосов
/ 02 марта 2010

Это требование языка. Единственный способ встроить классы в один файл - это создать внутренние классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...