लघु संस्करण: मुझे कॉल स्टैक में पिछले Method
का पता लगाने के लिए जावा में एक रास्ता खोजने की आवश्यकता है (विधि में पूंजी 'एम' पर ध्यान दें - मुझे वास्तविक java.lang.reflect.Method
ऑब्जेक्ट की आवश्यकता है)।जावा में कॉलिंग विधि ढूंढें
पृष्ठभूमि: मैं गूगल अमरूद Preconditions.checkNotNull(...)
अवधारणा के लिए एक विस्तार है कि प्रोग्रामर एक साथ अशक्त के लिए मानकों की सभी जांच करने के लिए, और फोन करने के विधि के पैरामीटर के नाम पर आधारित एक एनपीई निर्माण की अनुमति देगा पर काम कर रहा हूँ। उदाहरण के लिए:
public class MyClass
{
public void myMethod(Object arg1, Integer arg2, String arg3)
{
MyPreconditions.checkAllNotNull(arg1, arg2, arg3);
}
}
तो अगर पहले तर्क अशक्त था, तो एनपीई arg1 cannot be null (MyClass:myMethod(Object, Integer, String)
पढ़ सकता है मैं पहले से ही बाहर काम किया है बुला Class
पाने के लिए और मैं वसंत के माध्यम से पैरामीटर नाम प्राप्त कर सकते LocalVariableTableParameterNameDiscoverer
(या परानामर लाइब्रेरी के माध्यम से) एक में मेरे पास Method
है। एकमात्र ऐसा हिस्सा जिसे मैं समझ नहीं पा रहा हूं वह है कि Method
स्वयं कैसे प्राप्त करें।
मुझे पता है कि आप नाम विधि प्राप्त करने के लिए स्टैक ट्रेस का उपयोग कर सकते हैं, लेकिन यह विधि मदद नहीं की जाती है, तो यह मदद नहीं करता है। असली स्टैक प्राप्त करने के लिए कोई तरीका है (आंतरिक com.sun कक्षाओं के साथ भी)? वैकल्पिक रूप से, मुझे कॉलिंग विधि के लिए लाइन नंबर मिल सकता है, तो Class
ऑब्जेक्ट से पुनर्प्राप्त के रूप में Method
की लाइन संख्या खोजने का कोई तरीका है?
http://stackoverflow.com/questions/421280/in-java-how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection –