Является ли использование пакета Java по умолчанию плохой практикой? - PullRequest
49 голосов
/ 21 октября 2011

Является ли использование пакета Java по умолчанию плохой практикой?

Ответы [ 4 ]

56 голосов
/ 21 октября 2011

Да, это так. В идеале имена пакетов должны быть глобально уникальными, чтобы избежать конфликтов имен. Использование пакета по умолчанию нарушает это соглашение. Также невозможно импортировать класс из пакета по умолчанию.

Почему неназванные пакеты вообще существуют, если это плохая идея? С JLS & sect; 7.4.2 :

Безымянные пакеты предоставляются платформой Java в основном для удобства при разработке небольших или временных приложений или только в начале разработки.

20 голосов
/ 21 октября 2011

Есть проблемы на разных уровнях:

  • вы не можете импортировать классы в пакете по умолчанию из классов, которые не
  • вы получите проблемы с загрузкой классов, если попытаетесь разрешить пакет по умолчанию в нескольких артефактах
  • вы больше не можете использовать защищенную область по умолчанию, как обычно
  • нет очевидного различия между вашим кодом и другим кодом
3 голосов
/ 21 октября 2011

Да, это так. Как уже говорилось в других ответах, вы не можете загружать классы из пакета по умолчанию.

См. SO ответы:

Как импортировать класс из пакета по умолчанию
Как получить доступ к java-классам в default-package?

Однако log4j требует, чтобы конфигурация находилась в пакете по умолчанию. Это единственное, что разумно держать там.

Редактировать: Как указали в комментариях Шон Патрик Флойд и Майкл, вы можете поместить любые файлы конфигурации в пакет по умолчанию. Спасибо вам обоим за то, что указали мне на это.

1 голос
/ 21 октября 2011

Да, это так.Проблема в том, что невозможно импортировать классы из пакета по умолчанию.

...