3

这是在类外调用的成员内部类的示例。

//Program of memeber inner class that is invoked outside a class

class Outer {
    private int data=10;

    class Inner {
        void msg() {
            System.out.println("Data: " + data);
        }
    }
}

class Test {
    public static void main(String args[]) {
          Outer obj=new Outer();
          Outer.Inner in = obj.new Inner();
          in.msg();
    }
}

有人可以解释这行代码:Outer.Inner in = obj.new Iner(); 是什么obj.new Inner()意思?

4

2 回答 2

3

重要的是要理解这一点Outer并且Inner是相关的。更具体地说,您需要一个Outer实例才能创建Inner实例。

Outer.Inner in = obj.new Inner();

Innerobj, 一个实例创建一个Outer实例。你可以看到这两者是相关的,因为will use ' field: using 'state 的msg()方法。如果它与 没有任何关系,那么您可以使用inobjdatainobjInnerstaticOuter

Outer.Inner in = new Outer.Inner();  // no Outer instance needed

当然,在您的情况下,您不能简单地制作Inner静态,因为它使用该data字段。

于 2013-08-13T21:20:38.350 回答
2
Outer.Inner in = obj.new Iner();

使用outer对象的引用您正在为类创建对象Iner,因为Iner它是Outer类的一部分。这里有更多信息

于 2013-08-13T21:17:45.003 回答