2013-08-12 7 views
5

के पैरामीटर नाम प्राप्त करें मुझे रनटाइम पर किसी विधि के पैरामीटर नाम प्राप्त करने की आवश्यकता है। क्या इसे प्राप्त करने का कोई तरीका है?एक इंटरफ़ेस विधि

मैंने LocalVariableTableParameterNameDiscoverer का उपयोग करने की कोशिश की जो एक स्प्रिंग क्लास है। लेकिन यह केवल कक्षाओं के लिए काम करता है न कि इंटरफेस।

+2

एकमात्र तरीका यह वास्तव में संभव है '.java' फ़ाइल को पार्स करने के माध्यम से। – Obicere

+0

यहां कुछ ऐसा ही है, जो आपको चाहिए: http://stackoverflow.com/questions/2237803/can-i-obtain-method-parameter-name-using-java-reflection – Jlewis071

+0

जहां तक ​​मुझे पता है कि यह होगा जावा 8 प्रतिबिंब में संभव है, अन्यथा आप बाइटकोड मैनिपुलेटिंग पुस्तकालयों का उपयोग करेंगे। –

उत्तर

2

पैरामीटर नाम प्राप्त करने का एकमात्र तरीका -g:vars विकल्पों का उपयोग करके स्रोत कोड संकलित करना है। यह कक्षा फ़ाइल में LocalVariableTable विशेषता उत्पन्न करता है। यह आमतौर पर अनुकूलन के लिए हटा दिया जाता है।

उदाहरण के लिए: (taken from here)

public class Example { 
    public int plus(int a){ 
    int b = 1; 
    return a + b; 
    } 
} 

यह एक LocalVariableTable इस प्रकार

LocalVariableTable पैदा करेगा:

Start Length Slot Name  Signature 
    0  6  0  this  LExample; 
    0  6  1  a  I 
    2  4  2  b  I 

LocalVariableTableASM की तरह किसी भी बाइट कोड उपकरण लाइब्रेरी का उपयोग करके पढ़ा जा सकता है या Javassist

+0

क्या यह जावा इंटरफेस के लिए भी काम करेगा? –

+0

मैंने खुद को कोशिश नहीं की है, लेकिन संकलित होने पर, अंततः इंटरफ़ेस एक .class फ़ाइल में अनुवाद करता है, यह जावा क्लास फ़ाइल के क्लास के साथ क्यों होना चाहिए। – Santosh

संबंधित मुद्दे