这是在类外部调用的成员内部类的示例。
//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()
是什么意思?
答案 0 :(得分:3)
了解Outer
和Inner
是相关的很重要。更具体地说,您需要 Outer
实例才能创建Inner
实例。
Outer.Inner in = obj.new Inner();
从Inner
obj
实例创建Outer
实例。您可以看到这两者相关,因为msg()
in
方法会使用obj
的{{1}}字段: data
使用in
的州。如果obj
为Inner
,则与static
没有任何关系,因此您可以使用
Outer
当然,在您的情况下,您不能简单地将Outer.Inner in = new Outer.Inner(); // no Outer instance needed
设为静态,因为它使用Inner
字段。
答案 1 :(得分:2)
Outer.Inner in = obj.new Iner();
使用outer
对象的引用为Iner
类创建对象,因为Iner
是Outer
类的一部分。这是more information。