java中静态嵌套类的成员

时间:2013-05-24 17:08:47

标签: java nested-class

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

public class Outer {

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

}

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

提前致谢。

2 个答案:

答案 0 :(得分:7)

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

import Outer.StaticNestedClass;

...
StaticNestedClass instance = new StaticNestedClass();

import Outer;

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

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

答案 1 :(得分:1)

来自java doc

  

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

     

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

     

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

OuterClass.StaticNestedClass nestedObject =
     new OuterClass.StaticNestedClass();