Почему каждый публичный класс находится в отдельном файле? - PullRequest
43 голосов
/ 23 августа 2009

Я недавно начал изучать Java и нашел очень странным, что каждый класс Java должен быть объявлен в отдельном файле. Я программист на C #, и C # не применяет никаких подобных ограничений.

Почему Java делает это? Были ли какие-либо соображения дизайна?

Редактировать (основываясь на нескольких ответах):

Почему Java не снимает это ограничение в эпоху IDE? Это не нарушит существующий код (или так будет?).

Ответы [ 12 ]

1 голос
/ 24 августа 2009

Это позволяет упростить эвристику при переходе от Foobar.class к Foobar.java.

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

Лично я обнаружил, что это одно из странных правил, которые в совокупности приводят к тому, что Java-приложения могут расти очень большими и при этом быть устойчивыми.

1 голос
/ 23 августа 2009

Не совсем ответ на вопрос, но точка данных, тем не менее.

Я извлек заголовки из моей личной библиотеки утилит C ++ (вы можете получить ее самостоятельно из здесь ) и почти все заголовочные файлы, которые фактически объявляют классы (некоторые просто объявляют свободные функции), объявляют один урок. Мне нравится думать о себе, как о довольно хорошем конструкторе C ++ (хотя библиотека местами немного мешает - я ее единственный пользователь), поэтому я предлагаю, чтобы по крайней мере для C ++ несколько классов в одном файле были нормальными и даже хорошая практика.

...