【问题标题】:What Java classes/packages are automatically imported? [duplicate]自动导入哪些 Java 类/包? [复制]
【发布时间】:2019-05-20 00:18:40
【问题描述】:
class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); 
    }
}

在上面的例子中,我们使用了println 方法,没有导入它的包。所以我想知道:自动包含哪些包或类?

【问题讨论】:

  • java.lang 包自动导入。
  • 您应该使用IDE,例如IntelliJ,它可以自动为您完成大部分import和包管理。

标签: java class package


【解决方案1】:

Everythingjava.lang 中默认导入 - 这里您使用java.lang.Systemjava.lang.String

【讨论】:

  • 并非全部...请参阅我的回答中 JLS 的摘录。
  • @AndyTurner 也许更具体地说,我应该说编译器隐式导入 java.lang 中的所有内容(不包括同意的子包)。
  • @AndyTurner 你说得对,我在 Elliot 的回复中误解了你的评论。
【解决方案2】:

默认导入两个包:

  • java.lang
  • 当前类所在的包(在上述代码的情况下,这表面上是默认包,否则您无法从中显式导入)。

来自language spec

编译单元中的代码自动访问其包中声明的所有类型,并自动导入预定义包 java.lang 中声明的所有公共类型。

因此,您只能访问 java.lang 中的 public 类型,但您可以访问当前包中的所有顶级类型。

但重要的是要注意 Java 包不是分层的,尽管外观如此,所以这意味着例如java.lang.reflect 也不会自动导入,因为 java.lang 正在导入。

【讨论】:

    【解决方案3】:

    在每个 java 类中,默认导入java.lang

    除此之外,您的课程所在的包(即包的非私有类)也是可用/可见 em> 到你的班级,除非你有你的班级在一个默认包,如果你有你的班级没有包定义。 p>

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 2010-12-05
      • 2018-09-12
      • 2011-01-16
      • 2019-12-03
      相关资源
      最近更新 更多