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

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

 Oliver21 окт. 2011 г., 14:33
У меня смутные воспоминания о проблемах, возникающих при использовании пакета по умолчанию при попытке обратиться к классам в этом пакете из других, «настоящих» пакетов.
 Goran Jovic21 окт. 2011 г., 14:34
Зависит от того, что ты делаешь. Для одноклассной домашней работы по Java это хорошо. Что-нибудь еще - просто поместите это в названную упаковку, и вы в безопасности.
 Anthony Grist21 окт. 2011 г., 14:34
«Это предложение, вероятно, поможет мне пройти проверку качества». Если вам нужно добавить совершенно бесполезное предложение для того, чтобы опубликовать свой вопрос, скорее всего, не стоит спрашивать в его текущем состоянии.
 aroth21 окт. 2011 г., 14:34
Да, если вы не пишете одноразовый код.
 Jayan03 июл. 2015 г., 07:03
По некоторым причинам это получило "близкие" голоса - Это не правильно. Этот вопрос не основан на мнении. Это имеет вескую причину, и ответы на это хорошо. Пожалуйста, избавьте это от "агрессивных закрытых голосов"

Ответы на вопрос(4)

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

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

Решение Вопроса

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

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

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

 Matt Ball21 окт. 2011 г., 15:34
"никто не использует пакет по умолчанию" [citation-needed]
 Matt Ball21 окт. 2011 г., 15:08
... Пока кто-то другой не имеет такой же ход мыслей, как вы. В чем проблема с использованием именованного пакета?
 Michael21 окт. 2011 г., 15:12
@irreputable Мне нравится твоя логика.
 thegreatjedi12 февр. 2016 г., 04:39
Почему предоставление чего-то, что по сути является плохой практикой ради удобства, является хорошей идеей? Почему стандарт / спецификация просто не требуют, чтобы все классы имели имя пакета как часть минимально необходимого синтаксиса, поэтому для начала не существует безымянного пакета? Среды IDE могут быть внутренне сконфигурированы, чтобы иметь именованный пакет «по умолчанию», называемый, например, «project-name», «project-name-team-name» или какой-либо другой предустановленной строкой / шаблоном. Если вы ленивы, изучаете или просто не нуждаетесь в нескольких пакетах, IDE может инкапсулировать обязательное именование пакетов.
 irreputable21 окт. 2011 г., 15:17
... да, но потом они беспокоились о таких людях, как я, поэтому все решили не использовать его.

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

Смотрите так ответы:

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

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

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

 Jonathan Spooner21 окт. 2011 г., 15:19
@SeanPatrickFloyd, именно такие комментарии помогают мне улучшить мои навыки! Спасибо.
 Michael21 окт. 2011 г., 15:14
Конфигурационные файлы Spring (applicationContext.xml) также часто бывают здесь.
 Sean Patrick Floyd21 окт. 2011 г., 14:43
Не только log4j config, много типов данных конфигурации. Но не Java-классы
 Stephen C12 февр. 2016 г., 04:35
«загрузка» и «импорт» - это разные понятия. Вы >> можете << загрузить классы из пакета по умолчанию.

Ваш ответ на вопрос