我们说嵌套类是封闭类的成员。
这是否意味着封闭类的每个实例都有自己的(n)内部/非静态嵌套类的副本,就像类的每个实例都有自己的非静态副本一样/ instance方法?
我的问题与我问题上方横幅中链接的question不重复。
该问题讨论了内部类是否自动保持对封闭类的引用(即使从未使用引用)。
我的问题是,因为类的所有实例都有自己的所有非静态成员字段的副本(和方法? - 我不确定方法) - 反对只有一个的静态成员所有类的实例都可以使用的副本;并且因为我们说嵌套类是封闭类的成员,然后内部类将成为封闭类的非静态/实例成员,对吗?
那么可以得出结论,封闭类的每个实例都有每个内部类的副本吗?
我甚至没有发现两个问题是相似的,更不用说重复了。我真的很想知道我的问题的哪一部分与一个内部类有关,它引用了封闭类。
我的问题已在接受的答案中得到了完美的回答。
答案 0 :(得分:2)
我从你给出的描述中创建了一个小例子。如果我没有正确理解你,请纠正我,但这是我从你的描述中读到的。
public class Outer {
class Inner {
}
public Inner inner = new Inner();
public static void main(String... args) {
Outer o1 = new Outer();
Outer o2 = new Outer();
System.out.println(o1.inner == o2.inner);
System.out.println(o1.inner.getClass() == o2.inner.getClass());
}
}
执行程序时,您可能会看到Inner
的实例不相等,但内部实例的类是。希望这能回答你的问题。
答案 1 :(得分:0)
这是否意味着封闭类的每个实例都有自己的(n)内部/非静态嵌套类的副本,
封闭类的每个实例都可以由零个或多个内部类的实例引用。
内部类的每个实例都具有对封闭类的一个实例的隐式引用。
顺便说一句,内部类是一个未声明为静态的嵌套类。 "内心阶层"包括匿名和非静态嵌套类。