class OuterClass {
static class StaticNestedClass {}
}
上面的 StaticNestedClass 是通过以下语法实例化的。
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();
这很容易理解,但我的问题是相同的嵌套类是通过以下代码在不使用外部类的情况下实例化的
StaticNestedClass nestedObject =
new StaticNestedClass();
请解释为什么它不需要 OuterClass 的资格并且仍然被编译 谢谢
最佳答案
这完全取决于代码的位置以及(如果适用)import
语句是什么。 OuterClass
中的任何代码都会自动识别 OuterClass
的成员,包括任何嵌套类(静态或非静态)。
如果类被导入,其他类中的代码也可以使用非限定的 StaticNestedClass
标识符:
import OuterClass.StaticNestedClass;
public class Elsewhere {
StaticNestedClass nested = new StaticNestedClass();
. . .
}
如果没有 import
,类 Elsewhere
中的代码将需要使用限定的类名 OuterClass.StaticNestedClass
。
关于java - 实例化静态嵌套类而不限定封闭类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197981/