Каков пакет по умолчанию, в который помещаются мои классы, если я его не указываю?

предположим у меня есть файл с именем 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 Безымянные Пакеты

блок компиляции, не имеющий объявления пакета, является частью неназванного пакета.