2013-10-28 4 views
12

में बाइटकोड विश्लेषण मैं बाइटकोड विश्लेषण प्रोजेक्ट पर काम कर रहा हूं, जिसके लिए मैं एएसएम का उपयोग कर रहा हूं। सब कुछ अच्छा चल रहा है, मैं पार्स करने में सक्षम हूं, कक्षा और विधि सूचनाओं को सफलतापूर्वक प्राप्त कर सकता हूं।जावा

लेकिन मैं जेनरिक के लिए बाइटकोड प्रतिनिधित्व को समझने में फंस गया हूं।

(ILjava/util/Collection<+TE;>;)Z 

यहाँ मैं समझ एक के बाद एक एकत्रित न करने की कोशिश कर रहा हूँ और यहाँ java.util.list से एक उदाहरण है जब मैं ClassVisitor से visitMethod का उपयोग जानकारी मुद्रित करने के लिए है, यह क्या मैं विधि के हस्ताक्षर से एक के लिए हो रही है है विधि के तर्कों: पूर्णांक

  • Ljava/util/Collection इसके लिए खड़ा के लिए

    • I खड़ा प्रकार का एक तर्क है Collection

    लेकिन मैं जेनरिक प्रकार पर अटक कर रहा हूँ यानी <+TE> आदि किसी को भी मेरा मार्गदर्शन कर सकते हैं? मैंने खोज करने की कोशिश की लेकिन पर्याप्त जानकारी नहीं मिली। अगर किसी के पास बाइटकोड नामों की सूची है तो क्या आप मुझे साझा कर सकते हैं?

  • उत्तर

    12

    सामान्य extends के लिए + खड़ा करते हुए TE का मतलब है एक प्रकार वर E

    इस प्रकार स्रोत कोड में यह कैसा दिखाई देगा है कि वहाँ:

    Collection<? extends E> -> Ljava/util/Collection<+TE;> 
    

    asm user guide खंड पर एक नज़र डालें 4.1.1 जेनिक्स -> मेटाडाटा

    +0

    ग्रेट और धन्यवाद। यह पर्याप्त होना चाहिए, मैं इसे आगे ले जाऊंगा। :) –