Как можно получить экземпляр объекта вызывающего класса?Получить экземпляр вызывающего (через отражение)
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();
}
}
Я знаю, что я могу узнать, позвонив класс/метод с помощью StackTrace, но мне нужен экземпляр конкретного видов доступа к переменному экземпляру (например, знач1 в примере).
Я знаю, что это грязно, но класс B находится в неизменяемой библиотеке, так что почти невозможно передать требуемое поле, не перестраивая все.
Что делать, если нет ни одного случая, ? Зачем вам это нужно? –
Нет, вы в принципе не можете этого сделать. –