是否有办法获取调用类的实例对象?
class A{
void foo(){
Object o = getCaller(); //?? expect instance of B
long val1 = .. // get val1 of o via reflection
// do something where val1 is crucial
}
}
class B{
double val1 = Math.random();
public static void main(String[] args) {
new B().callFoo();
}
void callFoo(){
new A().foo();
}
}
我知道可以通过堆栈跟踪找到调用的类/方法,但我需要具体的实例来访问实例变量(例如示例中的val1)。
我知道这很糟糕,但是B类在一个不可更改的库中,因此几乎不可能在不重新构建整个项目的情况下传递所需的字段。