Phiên bản ngắn: Tôi cần tìm một cách trong Java để xác định vị trí Method
trước đó trong ngăn xếp cuộc gọi (lưu ý thủ đô 'M' trong Phương thức - Tôi cần đối tượng java.lang.reflect.Method
thực).Tìm phương thức gọi trong Java
Bối cảnh: Tôi đang làm việc trên phần mở rộng cho khái niệm Google ổi Preconditions.checkNotNull(...)
cho phép lập trình viên kiểm tra đồng thời TẤT CẢ các tham số cho null và xây dựng NPE dựa trên tên tham số của phương thức gọi. Ví dụ:
public class MyClass
{
public void myMethod(Object arg1, Integer arg2, String arg3)
{
MyPreconditions.checkAllNotNull(arg1, arg2, arg3);
}
}
Vì vậy, nếu đối số đầu tiên là null, thì NPE có thể đọc arg1 cannot be null (MyClass:myMethod(Object, Integer, String)
Tôi đã làm việc ra làm thế nào để có được gọi Class
và tôi có thể nhận được những cái tên tham số qua mùa xuân LocalVariableTableParameterNameDiscoverer
(hoặc qua thư viện Paranamer), tôi có số Method
. Phần duy nhất mà tôi không thể tìm ra là làm thế nào để có được Method
chính nó.
Tôi biết rằng bạn có thể sử dụng theo dõi ngăn xếp để lấy phương thức tên, nhưng điều đó không giúp ích nếu phương pháp bị ghi đè. Có cách nào (ngay cả với các lớp com.sun nội bộ) để có được ngăn xếp thực tế? Ngoài ra, tôi có thể lấy số dòng cho phương thức gọi, vậy có cách nào để tìm số dòng của một số Method
được truy xuất từ đối tượng Class
không?
Bản sao của http://stackoverflow.com/questions/421280/in-java-how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection –