A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李春生 中级黑马   /  2012-10-30 23:58  /  1870 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用引用计数法时,引用计数陷入死循环怎么处理
例如
class A{     
       private B b;
           }
class B{
         private A a;
           }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
  1. import java.util.ArrayList;
  2. import java.util.List;

  3. abstract class Root{
  4.     private List<Object> incomingReferenceList = new ArrayList<Object>();
  5.    
  6.     public void addIncomingReferenceObject(Object obj){
  7.         if(!incomingReferenceList.contains(obj))
  8.             incomingReferenceList.add(obj);
  9.     }
  10.    
  11.     public int getReferencedCount(){
  12.         return incomingReferenceList.size();
  13.     }
  14. }

  15. class A extends Root{
  16.     private B b;
  17.    
  18.     public void setB(B b){
  19.         this.b = b;
  20.         b.addIncomingReferenceObject(this);
  21.     }
  22. }

  23. class B extends Root{
  24.     private A a;
  25.    
  26.     public void setA(A a){
  27.         this.a = a;
  28.         a.addIncomingReferenceObject(this);
  29.     }
  30. }
复制代码
维护一个反向引用列表就行了

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马