是否可以使用非静态成员类型而不与封闭类的实例相关联?
例如
class Outer {
class Inner {
}
}
public class Demo {
public static void main(String args[]) {
Outer o = new Outer();
Outer.Inner inner = o.new Inner();
}
}
在Outer.Inner inner = o.new Inner()
中,Outer.Inner
是否使用Inner
而不与封闭类的实例相关联?
还有其他示例可以使用非静态成员类型而不与封闭类的实例相关联吗?
谢谢
答案 0 :(得分:2)
Outer.Inner
是否使用Inner
而不与封闭类的实例相关联?
从某种意义上讲,是的,因为Outer.Inner
指的是类型。而且,您不需要实例即可使用 types 。
我认为您错误地认为Outer.Inner
不起作用,因为存在由Inner
的不同实例创建的数量众多的称为Outer
的不同类型。您可能以为,如果我有两个不同的Outer
,o1
和o2
实例,它们将创建不同的Inner
types 。 >
但这完全不是事实。您完全可以做这样的事情:
Outer o1 = new Outer();
Outer o2 = new Outer();
Outer.Inner inner1 = o1.new Inner();
Outer.Inner inner2 = o2.new Inner();
inner2 = inner1;
所以Outer.Inner
只是一种类型。恰好是这种类型的实例需要Outer
的实例才能创建。