如果我不指定我的类,则将其放入的默认包是什么?

2022-09-01 11:52:05

让我们假设我有一个使用以下代码命名的文件:Main.java

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

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


答案 1

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

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

JLS说:

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


答案 2

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


推荐