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

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

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

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

Спасибо

20
задан Lachlan Roche 25 February 2010 в 15:42
поделиться

3 ответа

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

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

В JLS говорится, что:

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

25
ответ дан 30 November 2019 в 00:13
поделиться

Согласно JLS он называется:

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

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

4
ответ дан 30 November 2019 в 00:13
поделиться

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

6
ответ дан 30 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: