29

假设我有一个名为 Main.java 的文件,其中包含以下代码:

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

它是否放在一个特定的包中,在(也许?)一个未命名的包中?

谢谢

4

3 回答 3

32

不在命名包中的类在未命名包中。因此完整的类名是Main.

此类类不能从命名包中使用,除非通过反射。

JLS 说:

Java SE 平台提供了未命名的包,主要是为了在开发小型或临时应用程序或刚开始开发时方便。

于 2010-02-25T15:35:40.327 回答
9

Java 没有命名空间,它有包。是的,没有包声明的类隐含地是“未命名包”的一部分,通常也称为“默认包”。但是,由于无法从未命名的包中导入类,并且语言规范明确允许实现对未命名包中的类是否以及如何相互可见具有不同的规则,因此将所有类放在命名包中通常是个好主意除实验代码外的软件包。

于 2010-02-25T15:40:48.927 回答
4

根据JLS,它被称为:

7.4.2 未命名的包

没有包声明的编译单元是未命名包的一部分。

于 2010-02-25T15:40:52.733 回答