当前位置:  开发笔记 > 编程语言 > 正文

如何解决内部类的循环依赖?

如何解决《如何解决内部类的循环依赖?》经验,为你挑选了1个好方法。

(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中的循环引用没有任何问题.对象运行良好,当它们没有被引用时,它们被垃圾收集.如果他们互相指责并不重要.



1> helios..:

静态vs实例类:如果将内部类声明为static,则内部类的实例不具有对外部类的任何引用.如果它不是satic那么你的内部对象有效地指向创建它的外部对象(它有一个隐式引用,事实上,如果你对它的构造函数使用反射,你会看到一个额外的参数来接收外部实例).

内部实例指向外部实例:循环引用以防每个实例指向另一个实例.很多时候,您使用内部类来优雅地实现某些接口和访问私有字段,而不实现与外部类的接口.它确实意味着内部实例点外部实例,但并不意味着相反.不是必需的循环参考.

关闭圆圈:无论如何,Java中的循环引用没有任何问题.对象运行良好,当它们没有被引用时,它们被垃圾收集.如果他们互相指责并不重要.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有