获取Java中对某些对象的每个引用

时间:2013-01-18 16:31:23

标签: java

  

可能重复:
  All references to an object

我正在寻找一种方法来获取一个在Java中引用某个变量的类/实例成员列表。

例如,对于这种情况:

public class MyClass {
    public LinkedList list; 
} 

public class MyOtherClass {
    public LinkedList list;
}

public class Program {

   public static void main(...) {
      LinkedList list = new LinkedList();
      MyClass c1 = new MyClass();
      MyOtherClass c2 = new MyOtherClass();

      c1.list = list;
      c2.list = list;
   }
}

在程序结束时,我们在LinkedList的第一行代码中创建了Program.main的3个引用:

  1. Program.main.list
  2. MyClass.list
  3. MyOtherClass.list
  4. 虽然第一个是局部变量(不关心我),但其他的是实例字段。在这种情况下,我需要它的某种方式来获得对象(MyClassMyOtherClass)的引用以及对{LinkedList和{{1}}的引用的字段名称。 1}}在第1行创建。

    我该怎么做?

1 个答案:

答案 0 :(得分:2)

“Pure”Java解决方案:不确定它是否适合您,但如果您能负担包装对象并仅通过包装器访问它,那么您可以尝试WeakHashMap

public class Wrapper {
    private final Object yourObject;

    private final WeakHashMap<Object, Object> accessors = new WeakHashMap<Object, Object>();

    public Wrapper(Object yourObject) {
        this.yourObject = yourObject;
    }

// add synchronized if you want thread-safety.
    public Object getYourObject(Object accessor) {
        accessors.put(accessor, accessor);
        return yourObject;
    }

// add synchronized if you want thread-safety.
    public Object[] getAccessors() {
        return accessors.keySet().toArray(new Object[accessors.keySet().size()]);
    }
}