मेरे पास निम्नलिखित अजीब आवश्यकता है।बाइटकोड कैसे उत्पन्न करें और .class फ़ाइल में कैसे सहेजें?
मैं दिया हूँ:
- कुछ विधि के नाम की एक सूची।
- उपरोक्त तरीकों के पैरामीटर के नाम और प्रकार।
- उपरोक्त तरीकों की कार्यक्षमता। यह निम्नानुसार है: प्रत्येक पैरामीटर के लिए, विधि
toString
का उपयोग करके स्ट्रिंग में परिवर्तित हो जाती है और तारों की एक सरणी प्राप्त करती है। इस सरणी में, विधिfoo
फ़ंक्शन लागू करती है। फ़ंक्शनfoo
String []
प्रकार इनपुट के रूप में लेता है औरString
आउटपुट करता है। विधियों को वापसfoo
रिटर्न देता है।foo
का कोड जावा ऑब्जेक्ट के अंदर दिया गया है और इसे ब्लैक-बॉक्स के रूप में एक्सेस किया जाना है।
जानकारी 1. और 2. में एक पाठ या एक्सएमएल फ़ाइल में हो सकता है। इस उद्देश्य के लिए, हम किसी भी तरह से जावा ऑब्जेक्ट के अंदर उपलब्ध होने पर विचार कर सकते हैं।
कार्य .class
फ़ाइल (यानी, बाइटकोड) बनाने के लिए है जो उन विधियों को लागू करता है और JVM पर चलाया जा सकता है।
मुझे लगता है कि this assembler library ऐसा करने का एक तरीका होगा। क्या कोई आसान तरीका सुझा सकता है?
[संपादित करें]] मैं एक और तरीके से सोच सकता हूं: पहले .java
फ़ाइल उत्पन्न करें और फिर इसे .class
फ़ाइल प्राप्त करने के लिए संकलित करें।
[संदर्भ:] मुझे कई सैकड़ों तरीकों से ऐसा करना है। मैं शॉर्टकट चाहता हूं ताकि मैं मैन्युअल रूप से कोड लिखने के बजाय अपना काम स्वचालित कर सकूं। http://java-source.net/open-source/bytecode-libraries
Javassist पर एक नज़र डालें:
क्या आप अधिक संदर्भ दे सकते हैं, आप क्या हासिल करना चाहते हैं ... एक सामान्य व्यवहार (foo) के लिए विशिष्ट तरीकों को "बनाने" के लिए एकमात्र कारण टाइप सुरक्षा है जो समय संकलित करने में सहायक है ...जेनरेट कोड का उपयोग/कॉल करने के लिए आप कैसे जा रहे हैं? – pgras
मैं जेनरेट कोड नहीं कॉल करूंगा। मैं जो करना चाहता हूं वह किसी के लिए उपयोग करने के लिए एपीआई लाइब्रेरी (जार) बनाना है। कक्षा एक विशिष्ट नाम का होगा, इसलिए वे जान लेंगे कि कौन सी एपीआई कॉल करेगी। – Jus12
ठीक है, मैं सैकड़ों तरीकों से समस्या को देखता हूं, क्या विधियों की सूची अक्सर बदलती है या नहीं? क्या आपके पास उपयोग किए जा रहे इनपुट का उदाहरण हो सकता है? – pgras