(Java问题)
如果我引用内部类中的字段,这是否会导致封闭类和内部类之间的循环依赖?
我怎么能避免这个?
这是一个例子:
public class Outer { private Other o; private Inner i; public Outer() { o = new Other(); i = new Inner() { public void doSomething() { o.foo(); } }; } }
helios.. 10
静态vs实例类:如果将内部类声明为static,则内部类的实例不具有对外部类的任何引用.如果它不是satic那么你的内部对象有效地指向创建它的外部对象(它有一个隐式引用,事实上,如果你对它的构造函数使用反射,你会看到一个额外的参数来接收外部实例).
内部实例指向外部实例:循环引用以防每个实例指向另一个实例.很多时候,您使用内部类来优雅地实现某些接口和访问私有字段,而不实现与外部类的接口.它确实意味着内部实例点外部实例,但并不意味着相反.不是必需的循环参考.
关闭圆圈:无论如何,Java中的循环引用没有任何问题.对象运行良好,当它们没有被引用时,它们被垃圾收集.如果他们互相指责并不重要.
静态vs实例类:如果将内部类声明为static,则内部类的实例不具有对外部类的任何引用.如果它不是satic那么你的内部对象有效地指向创建它的外部对象(它有一个隐式引用,事实上,如果你对它的构造函数使用反射,你会看到一个额外的参数来接收外部实例).
内部实例指向外部实例:循环引用以防每个实例指向另一个实例.很多时候,您使用内部类来优雅地实现某些接口和访问私有字段,而不实现与外部类的接口.它确实意味着内部实例点外部实例,但并不意味着相反.不是必需的循环参考.
关闭圆圈:无论如何,Java中的循环引用没有任何问题.对象运行良好,当它们没有被引用时,它们被垃圾收集.如果他们互相指责并不重要.