Ati*_*tif 0 java static nested
public class MyClass {
public int myclassMember=NestedClass.nestedclassMember; //Compiler error,static reference to a non-static field
public static class NestedClass {
public int nestedclassMember=myclassMember; //Compiler error,static reference to a non-static field.
public NestedClass() {
}
}
}
Run Code Online (Sandbox Code Playgroud)
但与此同时,在删除编译时错误后,以下内容完全合法 - :
MyClass.NestedClass nestedInstance= new MyClass.NestedClass();
Run Code Online (Sandbox Code Playgroud)
给出了什么?这个类如何同时是静态的和非静态的?
static 在这种情况下,对于字段和方法意味着什么并不意味着同样的事情.
静态嵌套类是不需要创建任何外部类实例的类.
非静态嵌套类需要创建其外部类的实例,并且具有对此实例的隐式引用(可TheNameOfTheOuterClass.this在内部类中使用).
静态内部类通常用于避免在仅由一个类使用类时将类暴露给外部,或者使类能够访问外部类的私有字段和方法,或者将类的范围扩展到另一个类,因为它与它紧密相连.