2

可能重复:
对对象的所有引用

我正在寻找一种方法来获取在 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在我的第一行代码中创建了3 个引用Program.main

  1. Program.main.list
  2. MyClass.list
  3. MyOtherClass.list

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

我怎样才能做到这一点?

4

1 回答 1

2

“纯”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()]);
    }
}
于 2013-01-18T17:08:23.433 回答