Каков пакет по умолчанию, в который помещаются мои классы, если я не укажу его?
Предположим, у меня есть файл с именем Main.java со следующим кодом:
public class Main {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
Он помещается в определенный пакет, в (возможно?) неназванный пакет?
Спасибо
Ответы
Ответ 1
Класс, который не находится в именованном пакете, находится в неназванном пакете. Таким образом, полное имя класса - Main
.
Такие классы нельзя использовать из именованного пакета, кроме как через отражение.
JLS говорит, что:
Безвизовые пакеты предоставляются платформой Java SE главным образом для удобства при разработке небольших или временных приложений или когда только начинается разработка.
Ответ 2
В Java нет пространств имен, в нем есть пакеты. И да, классы без деклараций пакетов неявно являются частью " неназванный пакет", часто также называемый "пакет по умолчанию". Тем не менее, поскольку невозможно импортировать классы из неназванного пакета, и поскольку спецификация языка явно позволяет реализациям иметь разные правила о том, являются ли классы в неназванных пакетами видимыми друг для друга, обычно рекомендуется добавить все классы в именах пакеты, за исключением экспериментального кода.
Ответ 3
В соответствии с JLS он вызывает:
7.4.2 Пакеты без названия
Единица компиляции, которая не имеет объявления пакета, является частью неназванного пакета.