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