3

我注意到有一些特殊的方法可以在 Java 中限定实体:

Object o = new Outer().new Inner();

在这种情况下,我们用 Outer 类限定了 Inner 类,所以我们只需要导入 Outer 类:

import mypackage.Outer;

还有其他类似的案例吗?(也就是说,出现不寻常的资格 - 不寻常的意思是不是:)fullQualifier.identifier

我不包括自动导入的情况(java.lang、原始类型等)

4

3 回答 3

2

我认为您误解了您所描述的构造:

Object o = new Outer().new Inner();

实际上是一种完全限定Inner类的构造函数的方法,就像在

Outer.Inner i = new Outer().new Inner();

另一方面,你可以这样写:

import path.to.Outer;
import path.to.Outer.Inner;

// ...

Inner i = new Outer().new Inner();
于 2011-01-16T12:37:00.430 回答
1

此外,在以下情况下,您不需要导入类:

  • 您使用对象的完整路径。例如:

    java.util.Date d = new java.util.Date();
    
  • 该类在同一个包中

  • 该类在java.lang包中,例如String
于 2011-01-16T12:53:15.003 回答
-1

在这种情况下,外包装包括内包装,这就是为什么不需要导入内包装,在大多数情况下,不需要为了使用一个组件而导入整个包..例如我只想使用一个字符串,不需要导入整个 java.lang。在某些复杂的库使用中,如果您使用某些 IDE,它们可以为您修复导入,例如在 netbeans 中 ctrl+shift+i 将修复您的导入

于 2011-01-16T12:38:35.943 回答