我注意到有一些特殊的方法可以在 Java 中限定实体:
Object o = new Outer().new Inner();
在这种情况下,我们用 Outer 类限定了 Inner 类,所以我们只需要导入 Outer 类:
import mypackage.Outer;
还有其他类似的案例吗?(也就是说,出现不寻常的资格 - 不寻常的意思是不是:)fullQualifier.identifier
。
我不包括自动导入的情况(java.lang、原始类型等)
我认为您误解了您所描述的构造:
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();
此外,在以下情况下,您不需要导入类:
您使用对象的完整路径。例如:
java.util.Date d = new java.util.Date();
该类在同一个包中
java.lang
包中,例如String
在这种情况下,外包装包括内包装,这就是为什么不需要导入内包装,在大多数情况下,不需要为了使用一个组件而导入整个包..例如我只想使用一个字符串,不需要导入整个 java.lang。在某些复杂的库使用中,如果您使用某些 IDE,它们可以为您修复导入,例如在 netbeans 中 ctrl+shift+i 将修复您的导入