/ / मिश्रित जावा संस्करणों की दुनिया में जेनरिक का उपयोग कैसे करें? - जावा, जेनरिक, जेवीएम, पोर्टेबिलिटी

मिश्रित जावा संस्करणों की दुनिया में जेनेरिक का उपयोग कैसे करें? - जावा, जेनेरिक, जेवीएम, पोर्टेबिलिटी

मुझे जेनेरिक बहुत पसंद हैं और मैं जहां भी उनका उपयोग करता हूंकर सकते हैं। हर अब और फिर मुझे अपनी एक अन्य परियोजना में एक कक्षा का उपयोग करने की आवश्यकता है, जिसे एक पुराने JVM (5.0 से पहले) पर चलाना है, JavaME पर चलाने की आवश्यकता है (जहाँ जेनेरिक को न तो अनुमति नहीं है) या Microsoft J # में (जो बहुत खराब है जेनरिक के लिए समर्थन)।

फिलहाल, मैं सभी जेनेरिकों को मैन्युअल रूप से हटा देता हूं, जिसका अर्थ है कई जातियों को सम्मिलित करना।

चूंकि जेनरिक को केवल संकलन-समय कहा जाता है, और जेनेरिक कोड का प्रत्येक टुकड़ा संभवतः गैर-जेनेरिक कोड में स्वचालित रूप से परिवर्तित हो सकता है, मुझे आश्चर्य है कि अगर कोई उपकरण है जो मेरे लिए ऐसा कर सकता है।

यदि ऐसा कोई उपकरण नहीं है, तो मैं समस्या को कैसे हल कर सकता हूं? क्या मुझे जेनरिक का उपयोग पूरी तरह से बंद कर देना चाहिए?

से संबंधित उत्तर पहले से ही हैं बायोटेक कम्पेटिबिलिटी। अगर मुझे जरूरत है तो क्या होगा स्रोत कोड संगतता किसी कारण के लिए?

उत्तर:

जवाब के लिए 5 № 1

आपको कुछ का उपयोग करने की आवश्यकता है Retroweaver इस तरह की चीज हासिल करने के लिए। इस प्रश्न पर अन्य उत्तर थोड़े भ्रामक हैं। जेनरिक पिछले संस्करणों के साथ सॉर्ट-बाय-बायोडेट संगत हैं, लेकिन पूरी तरह से नहीं (देखें) java.lang.reflect.Type अगर तुम मुझे विश्वास नहीं करते)। इसके अलावा, बाईटेकोड संस्करण विशेषता का एक मुद्दा है, जो पिछले संस्करण पर 1.5 से संकलित वर्ग को रोक देगा। एनरो 5 अन्य सुविधाओं जैसे एनोटेशन और एनम को सक्षम करने के साथ-साथ दोनों समस्याओं के आसपास काम करता है।


जवाब के लिए 2 № 2

नेटबीन्स में (मुझे नहीं पता कि आप कौन से आईडीई हैंका उपयोग करते हुए) आप सेट जावा संस्करण के लिए स्रोत-कोड संगतता सेट कर सकते हैं - बस इसे एक सेट करें जो जेनरिक का समर्थन करता है। जैसा कि पहले से ही पोस्ट किया गया है, जेनेरिक पुराने JVM / JRE संस्करणों के साथ बायोटेक कॉम्पेटिबल हैं और इसलिए इसे उम्मीद से काम करना चाहिए।


जवाब के लिए 2 № 3

मेरे ज्ञान का सबसे अच्छा करने के लिए जावा 5 है नहीं बाइट-कोड जावा 1.4 के साथ संगत। यानी, आप पहले वाले VM के साथ जावा 5 संकलित कक्षाओं का उपयोग नहीं कर सकते।

आप रिट्रोएवर की जांच कर सकते हैं। जब जेनेरिक को पेश किया गया था तब इसका बहुत उल्लेख किया गया था। मुझे व्यक्तिगत रूप से इसके साथ कोई अनुभव नहीं है।

क्या आपने Google से पूछा? मेरी खोज चालू हुई http://www.publicobject.com/glazedlists/documentation/Generics_and_Java_1.4_with_one_codebase.pdf, जो एक बहुत ही दिलचस्प दृष्टिकोण है।


उत्तर के लिए -5 № 4

इसके बाइटकोड संगत, यह एक पुराने दुभाषिया के साथ बॉक्स से बाहर काम करना चाहिए।