là nó bằng cách nào đó có thể để có được đối tượng dụ của lớp gọi điện thoại?Lấy ví dụ của người gọi (thông qua sự phản ánh)
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();
}
}
Tôi biết rằng tôi có thể tìm lớp/phương thức gọi qua stacktrace nhưng tôi cần cá thể riêng lẻ để truy cập các biến mẫu (ví dụ như val1).
Tôi biết nó bẩn nhưng lớp B nằm trong thư viện không thể thay đổi để gần như không thể vượt qua trường bắt buộc mà không cần xây dựng lại mọi thứ.
gì nếu không có ví dụ ? Tại sao bạn thậm chí cần nó? –
Không, về cơ bản bạn không thể làm điều này. –