Подтвердить что ты не робот

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

Предположим, у меня есть файл с именем Main.java со следующим кодом:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

Он помещается в определенный пакет, в (возможно?) неназванный пакет?

Спасибо

4b9b3361

Ответ 1

Класс, который не находится в именованном пакете, находится в неназванном пакете. Таким образом, полное имя класса - Main.

Такие классы нельзя использовать из именованного пакета, кроме как через отражение.

JLS говорит, что:

Безвизовые пакеты предоставляются платформой Java SE главным образом для удобства при разработке небольших или временных приложений или когда только начинается разработка.

Ответ 2

В Java нет пространств имен, в нем есть пакеты. И да, классы без деклараций пакетов неявно являются частью " неназванный пакет", часто также называемый "пакет по умолчанию". Тем не менее, поскольку невозможно импортировать классы из неназванного пакета, и поскольку спецификация языка явно позволяет реализациям иметь разные правила о том, являются ли классы в неназванных пакетами видимыми друг для друга, обычно рекомендуется добавить все классы в именах пакеты, за исключением экспериментального кода.

Ответ 3

В соответствии с JLS он вызывает:

7.4.2 Пакеты без названия

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