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