【问题标题】:What is the default package in which my classes are put if I don't specify it?如果我不指定,我的课程放在哪个默认包中?
【发布时间】:2011-01-21 01:39:44
【问题描述】:

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

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

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

谢谢

【问题讨论】:

    标签: java package default-package


    【解决方案1】:

    根据JLS,它被称为:

    7.4.2 未命名的包

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        不在指定包中的类位于 unnamed package 中。因此完整的类名是Main

        这些类不能是来自命名包的used,除非通过反射。

        JLS 说:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多