我正在寻找一种方法来获取一个在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个引用:
Program.main.list
MyClass.list
MyOtherClass.list
虽然第一个是局部变量(不关心我),但其他的是实例字段。在这种情况下,我需要它的某种方式来获得对象(MyClass
和MyOtherClass
)的引用以及对{LinkedList
和{{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()]);
}
}