如果我在 java 中的静态嵌套类中定义一个成员变量,如下所示:
public class Outer {
public static class StaticNestedClass {
private int mMember = 3;
}
}
mMember 会被解释为静态的,因为它的类是静态的?java中的静态嵌套类成员呢?
提前致谢。
如果我在 java 中的静态嵌套类中定义一个成员变量,如下所示:
public class Outer {
public static class StaticNestedClass {
private int mMember = 3;
}
}
mMember 会被解释为静态的,因为它的类是静态的?java中的静态嵌套类成员呢?
提前致谢。
不,static
在类上的含义与static
在字段上的含义不同。该字段mMember
是嵌套类的私有实例字段StaticNestedClass
。您可以像使用任何其他顶级类一样使用这个嵌套类,只要您导入它或引用它的包含类来使用它,即。Outer.StaticNestedClass。例如,
import Outer.StaticNestedClass;
...
StaticNestedClass instance = new StaticNestedClass();
或者
import Outer;
...
Outer.StaticNestedClass instance = new Outer.StaticNestedClass();
内部类在某些规则下不能声明静态成员,请参见此处。
来自java文档
与类方法和变量一样,静态嵌套类与其外部类相关联。和静态类方法一样,静态嵌套类不能直接引用在其封闭类中定义的实例变量或方法——它只能通过对象引用来使用它们。
注意:静态嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了方便打包,它已经嵌套在另一个顶级类中。使用封闭类名访问静态嵌套类:
OuterClass.StaticNestedClass 例如,要为静态嵌套类创建对象,请使用以下语法:
OuterClass.StaticNestedClass nestedObject =
new OuterClass.StaticNestedClass();