2009-06-18 37 views
5

में रनटाइम पर नई कक्षाओं को विस्तार या जोड़ना जावा में रनटाइम पर जोड़ने (या मौजूदा) कक्षाओं को जोड़ने का कोई तरीका है। मैं एक समस्या पर फंस गया हूं, जिसमें मुझे रनटाइम पर मौजूदा कक्षा का विस्तार करना है और इसे क्लासपाथ में जोड़ना है, ताकि इस नई कक्षा को उठाया जा सके।जावा

धन्यवाद,

उत्तर

4

आप BCEL को देखने के लिए चाहते हो सकता है। आपको जो करना है, उसके बारे में और जानकारी के बिना, एक और विशिष्ट उत्तर देना मुश्किल है।

0

आपको निश्चित रूप से यह लिखना चाहिए कि आपको इस सुविधा की आवश्यकता क्यों है। यदि आप रनटाइम पर तर्क जोड़ने या बदलने का प्रयास करते हैं तो आप scripting API और कुछ वास्तविक implementations पर एक नज़र डालना चाहते हैं।

11

आप इसे करने के कई तरीके हैं। रनटाइम पर

  • संकलित स्रोत कोड javax.tools पैकेज का उपयोग और फिर एक ClassLoader का उपयोग कर उन्हें लोड।
  • यदि आप इंटरफेस पर लिख रहे हैं, तो आप कक्षाओं को Proxy से सजाने के लिए तैयार कर सकते हैं।
  • BCEL या ASM जैसी तकनीक का उपयोग करके बाइटकोड मैनिपुलेशन/पीढ़ी का अधिक जटिल मार्ग लें (उत्तरार्द्ध में भाषा सुविधाओं के लिए अधिक अद्यतित समर्थन है, जैसे एनोटेशन) और फिर कक्षा को क्लासलोडर के साथ लोड करें।

मुझे कल्पना है कि अन्य विकल्प भी हैं।