Java VM specification में एक नज़र डालने के बाद, मैंने देखा कि पहचानकर्ता बनाने के लिए केवल ASCII अक्षरों से बहुत अधिक उपयोग किया जा सकता है।ट्रू जावा जेनेरिक (टेम्पलेट्स)
सबसे पहले, मैं अगर कोई अतिरिक्त प्रतीकों ($
से अलग, कि पहचानकर्ता के लिए उपलब्ध हैं)
क्या आपको लगता है, संभव होगा विस्तारित चरित्र के साथ एक पहचानकर्ता में अतिरिक्त जानकारी के सांकेतिक शब्दों में बदलना करने के लिए सेट कर रहे थे सोच रहा था , और एक कस्टम क्लासलोडर, सही जावा जेनरिक लागू करने के लिए?
बेशक, आपको चारों ओर टाइप एरर प्राप्त करना होगा, लेकिन कस्टम पार्सर के साथ यह संभव हो सकता है? के रूप में मैं मूल कार्यान्वयन को संशोधित करने का इरादा नहीं $g$GenericList$_Java_lang_String$
मैं GenericList
यहाँ उपयोग कर रहा हूँ:
तो आप की तरह एक प्रारूप में जेनेरिक नाम संग्रहीत कर सकती है!
उन्हें कक्षा लोडर के साथ लोड करें, उचित GenericList<String>
संस्करण बनाएं और इसे वापस भेजें।
संपादित करें: मैं उस भाषा के लिए इसका उपयोग करने की योजना बना रहा हूं जिसे मैं JVM पर बना रहा हूं। चूंकि यह $
और _
के विशेष वर्णों के रूप में उपयोग करता है, इस तरह की एन्कोडिंग जानकारी बस काम कर सकती है!
संपादित करें 2: मुझे लगता है कि करने के लिए और अधिक कठिन काम सामान्य तरीकों से होगा? क्या किसी के पास कोई जानकारी है कि उन्हें कैसे लागू किया जाएगा?
संपादित करें 3: कक्षाएं केवल उतार दिया जा सकता है कब से classloader गायब हो जाता है, मैं कैश और जैसे कि यह नेट में काम करता है संकल्प लिया टेम्पलेट्स को दूर करने में सक्षम हो जाएगा, या मैं इसे सी ++ की तरह करना होगा?
+1, दिलचस्प विचार। .NET IL पर एक नज़र डालना सुनिश्चित करें, जो जेनरिक्स को टाइप एरर के बिना लागू करने के लिए एक समान अवधारणा का उपयोग करता है (वहां, चरित्र '(बैकटिक) का उपयोग पहचानकर्ताओं में जेनेरिक पैरामीटर को सीमित करने के लिए किया जाता है)। –
मैं वास्तव में रोटर (एसएससीआईएल) देख रहा हूं, जो बहुत ही रोचक है। मेरी समस्या यह है कि मैं प्रत्येक जेनेरिक आइसेंटेंस के कैशिंग और टाइम-टू-लाइव को कैसे कार्यान्वित करता हूं – Darkzaelus