0

如果我在 java 中的静态嵌套类中定义一个成员变量,如下所示:

public class Outer {

    public static class StaticNestedClass {
         private int mMember = 3;
    }

}

mMember 会被解释为静态的,因为它的类是静态的?java中的静态嵌套类成员呢?

提前致谢。

4

2 回答 2

7

不,static在类上的含义与static在字段上的含义不同。该字段mMember是嵌套类的私有实例字段StaticNestedClass。您可以像使用任何其他顶级类一样使用这个嵌套类,只要您导入它或引用它的包含类来使用它,即。Outer.StaticNestedClass。例如,

import Outer.StaticNestedClass;

...
StaticNestedClass instance = new StaticNestedClass();

或者

import Outer;

...
Outer.StaticNestedClass instance = new Outer.StaticNestedClass();

内部类在某些规则下不能声明静态成员,请参见此处

于 2013-05-24T17:11:05.880 回答
1

来自java文档

与类方法和变量一样,静态嵌套类与其外部类相关联。和静态类方法一样,静态嵌套类不能直接引用在其封闭类中定义的实例变量或方法——它只能通过对象引用来使用它们。

注意:静态嵌套类与其外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了方便打包,它已经嵌套在另一个顶级类中。使用封闭类名访问静态嵌套类:

OuterClass.StaticNestedClass 例如,要为静态嵌套类创建对象,请使用以下语法:

OuterClass.StaticNestedClass nestedObject =
     new OuterClass.StaticNestedClass();
于 2013-05-24T17:12:56.840 回答