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