के साथ इसे पहचान सकूं, मुझे कुछ क्लोजर फ़ंक्शंस को "विशेष" के रूप में टैग करने की आवश्यकता है ताकि जावा कोड उन्हें प्रतिबिंब का उपयोग करने के रूप में पहचान सके। मैंने फ़ंक्शन में एनोटेशन जोड़ने की कोशिश की है, लेकिन जाहिर है कि यह समर्थित नहीं है। मैंने reify
IFn
का विस्तार करने वाला इंटरफ़ेस (ताकि जावा कोड फ़ंक्शन ऑब्जेक्ट को पहचान सके) की कोशिश की हो, लेकिन यह अच्छा नहीं है क्योंकि क्लोजर सीधे invoke
को लागू करने वाले कोड के रूप में संशोधित विधि का उपयोग नहीं करता है, बल्कि एक अप्रत्यक्ष कॉल Afunction
ऑब्जेक्ट जो वास्तव में विधि को लागू कर रहा है (मुझे वास्तविक फ़ंक्शन कोड के साथ वास्तविक invoke
विधि टैग करने की आवश्यकता है)।मैं क्लोजर फ़ंक्शन को कैसे टैग करूं ताकि मैं जावा प्रतिबिंब
कोई भी विचार?
संपादित करें: एएसएम लाइब्रेरी (नियमित प्रतिबिंब के बजाए) के साथ उपयोग किए जा सकने वाले तरीके से टैगिंग भी ठीक रहेगी, लेकिन मुझे किसी भी तरह वास्तविक AFunction
ऑब्जेक्ट या invoke
विधि टैग करने की आवश्यकता है। इसके अलावा, मैं वास्तविक AFunction
ऑब्जेक्ट तक नहीं पहुंच सकता - मुझे कक्षा में दिखाई देने वाला टैग चाहिए।
धन्यवाद! दुर्भाग्यवश, मेरे पास आईएफएन ऑब्जेक्ट तक पहुंच भी नहीं है - केवल इसकी कक्षा में। मुझे कक्षा को टैग करने की ज़रूरत है (मुझे किसी विशिष्ट जानकारी को भी संलग्न करने की आवश्यकता नहीं है, यह निर्धारित करने का एक तरीका है कि कक्षा किसी भी तरह "चिह्नित" है या नहीं। मैंने आवेक विधि को टैग करके इसे टैग करने के बारे में सोचा था कि यह एक प्रसिद्ध चेक अपवाद फेंकता है, लेकिन क्लोजर से ऐसा करने का कोई तरीका नहीं है। – pron
क्या आप क्लोजर और जावा के कुछ नमूना कोड प्रदान कर सकते हैं यह दिखाने के लिए कि क्लोजर से कक्षा कैसे बनाई जाती है और जावा से एक्सेस किया जाता है क्योंकि इससे प्रश्न अधिक स्पष्ट हो जाएगा – Ankur
मैं कुछ कक्षाओं के लिए जावाएजेंट का उपयोग करता हूं। जब एक नई कक्षा लोड हो जाती है तो मुझे अधिसूचित किया जाता है। मैं किसी भी तरह क्लोजर फ़ंक्शन को टैग करना चाहता हूं ताकि मुझे पता चले कि इसे उपकरण की आवश्यकता है या नहीं। – pron