आप जानते हैं, जैसे सीएलआर करता है। क्या कोई भी रनटाइम जेनेरिक जानकारी की कमी को स्वीकार कर रहा है, यह एक समस्या है, और इसे हल करने के लिए काम कर रहा है?क्या रनटाइम पर जेनेरिक का समर्थन करने के लिए JVM के लिए कोई योजना है?
उत्तर
जावा के डिजाइनरों ने पिछड़े संगतता (बाइटकोड स्तर पर) को बनाए रखने के लिए इस समाधान का चयन किया। तब से, वहां और भी जावा कोड है, इस प्रकार पिछड़े संगतता को तोड़ने से कभी भी खराब परिणाम होंगे। तो मुझे संदेह है कि वे इसके बारे में अपने दिमाग बदल देंगे।
void foo(List<String> strings) { ... }
void foo(List<Integer> ints) { ... }
भी:
उन्होंने उल्लेख किया है कि यदि संभव हो तो वे भविष्य में ऐसा करना चाहते हैं, और एओबोब का उल्लेख है कि पिछड़े संगतता को तोड़ने के बिना ऐसा करने का कोई तरीका हो सकता है ... मुझे नहीं लगता कि इसे अस्वीकार कर दिया जा सकता है। – ColinD
@ColinD, निश्चित रूप से कुछ भी अस्वीकार नहीं किया जा सकता है :-) ध्यान दें कि @ एयोबोब का उद्धरण टाइप _ संशोधन को _optional_ सुविधा के रूप में प्रस्तावित करता है (माना जाता है कि केवल नए कोड के लिए)। –
@ सीपीआर को किसी भी पिछड़ा संगतता के मुद्दों का सामना नहीं करना पड़ा जब जेनेरिक .NET 2.0 में लागू किए गए थे ... इस संबंध में जेवीएम को और अधिक समस्याग्रस्त बनाता है? –
यह एक समस्या (टिप्पणियों से अपने प्रश्न का)
ठीक है, उदाहरण के लिए विचार है कि इस तरह की एक विधि को ओवरलोड क्यों नहीं कर पा रहा है हालांकि वास्तव में यह अनुमति देने के लिए समझ में आता है। (मुख्य कारण यह आज काम नहीं करता है, क्योंकि यह होता है, जब बाईटकोड को संकलित, foo(List strings)
और foo(List ints)
की तरह लग रही है।)
वहाँ JVM कार्यावधि में जेनरिक का समर्थन करने के लिए कोई योजना है?
this page के अनुसार यह कम से कम नहीं जावा 7 के लिए पाइप लाइन में हैreified जेनेरिक्स
वर्तमान में, जेनरिक, विलोपन का उपयोग करके लागू जिसका अर्थ है:
कि जेनेरिक प्रकार की जानकारी रनटाइम पर उपलब्ध नहीं है, जो किसी प्रकार का कोड लिखना मुश्किल बनाती है। जेनेरिक पुराने गैर-जेनेरिक कोड के साथ पिछड़ा संगतता का समर्थन करने के लिए इस तरह कार्यान्वित किए गए थे। संशोधित जेनरिक जेनेरिक प्रकार की जानकारी रनटाइम पर उपलब्ध कराएंगे, जो विरासत गैर-जेनेरिक कोड को तोड़ देगा। हालांकि, नील Gafter ने केवल निर्दिष्ट होने पर प्रकारों को फिर से लागू करने का प्रस्ताव दिया है, ताकि पिछड़े संगतता को तोड़ न सके।
लिंक
मैं किसी को (संभवतः मार्क रेनहोल्ड) का मानना है कि इस साल JavaOne में कहा है कि वे में जावा में जेनरिक वस्तु के बारे में जैसे सोचना की कोशिश कर सकते भविष्य। यह निश्चित रूप से जावा 9 की तुलना में जल्द से जल्द नहीं होगा, और काम करने के लिए कई संभावित मुद्दों के साथ एक बड़ा बदलाव होगा।
समस्या आंशिक रूप से हल के बिना JVM में परिवर्तन हो सकता है: जो सामान्य मापदंडों के लिए रन-टाइम प्रकार की जानकारी पकड़ स्काला में (JVM पर के रूप में अच्छी तरह से चल) आप तथाकथित Manifests जोड़ सकते हैं। मुझे लगता है कि इस समाधान को जावा के लिए बहुत अधिक परेशानी के बिना अनुकूलित किया जा सकता है। यह सही नहीं है, लेकिन संभवतः "वास्तविक चीज़" के रूप में लागू करना बहुत आसान है।
- 1. क्या Google App Engine पर डार्ट का समर्थन करने के लिए कोई आधिकारिक योजना है?
- 2. क्या 'सैमसंग ऐप' विशिष्ट ऐप्स पर रीडायरेक्ट करने के लिए यूआरआई योजना का समर्थन करता है?
- 3. क्या रनटाइम पर कक्षा के लिए बाइटकोड प्राप्त करने का कोई तरीका है?
- 4. क्या JVM के लिए गोसु सी # है?
- 5. क्या जावास्क्रिप्ट ऑब्जेक्ट्स पर ऑटोविविफिकेशन का समर्थन करने के लिए कोई लाइब्रेरी है?
- 6. योजना के लिए भुगतान करने के लिए मुझे क्या करने की ज़रूरत है?
- 7. क्या स्कैला के एसआईक्यू (ScalaIntegratedQuery) के लिए "प्रकार प्रदाता" का समर्थन करने की योजना है जैसे F #?
- 8. विफल करने के लिए डेटा URI योजना
- 9. क्या JVM युक्ति, JVM कार्यान्वयन, JVM क्रम के बीच अंतर
- 10. क्या स्थानीय स्थानीय चर का उपयोग करने के लिए कोई रनटाइम लाभ है?
- 11. क्या आईओएस कैलेंडर एक यूआरएल योजना का समर्थन करता है?
- 12. क्या RTLD_DEEPBIND का समर्थन करने के लिए प्लेटफ़ॉर्म के लिए dlopen() फ़ंक्शन में RTLD_DEEPBIND ध्वज का कोई विकल्प है जो RTLD_DEEPBIND का समर्थन नहीं करता है?
- 13. क्या स्कैला के लिए JVM को बदले बिना जेनेरिक को संशोधित करना संभव है?
- 14. क्या सी # के भविष्य के संस्करण में "विस्तार गुण" के लिए कोई योजना है?
- 15. योजना में लिस्प के "रनटाइम" आदिम के बराबर है?
- 16. क्या मेवेन के लिए कमांड लाइन के माध्यम से jvm args को पास करने का कोई तरीका है?
- 17. पायथन प्रोग्राम डीबग करने के लिए जीडीबी 7 के समर्थन का उपयोग करने के लिए क्या आवश्यक है?
- 18. रैवेनडीबी - स्केलेबिलिटी के लिए योजना
- 19. क्या mdbtools के लिए कोई प्रतिस्थापन है?
- 20. सी # पार्स स्ट्रिंग रनटाइम पर ज्ञात टाइप करने के लिए
- 21. किस संस्करण संख्या योजना का उपयोग करने के लिए?
- 22. क्या विंडोज/लिनक्स पर गिट-फ्लो के लिए कोई आईडीई/जीयूआई समर्थन है?
- 23. क्या वेबड्राइवर पाइथन के लिए पेजफैक्टरी का समर्थन करता है?
- 24. क्या इंडेक्स-आधारित सॉर्ट के लिए सी # समर्थन है?
- 25. आईओएस 6.0 मैप्स ऐप के लिए यूआरएल योजना क्या है?
- 26. जावा निर्दिष्ट करने के लिए जावा तर्क। JVM
- 27. ग्रेल्स सीखने के लिए हाथों पर अध्ययन योजना
- 28. क्या रनटाइम पर XAML के डाटाबेसिंग व्यवहार/त्रुटियों को डीबग करने के लिए कोई अच्छा टूल है?
- 29. क्या System.IO.FileShare के लिए कोई सीमा है?
- 30. क्या एसक्लगोमेट्रीबिल्डर के लिए कोई कार्यान्वयन है?
यह एक समस्या क्यों है? – hvgotcodes
@hvgotcodes: प्राइमेटिव्स के साथ उपयोग नहीं किया जा सकता है, कोई बेहतर दक्षता नहीं, प्रतिबिंब, निम्न प्रकार की सुरक्षा, और कई, कई कोने-मामलों के साथ उपयोग नहीं कर सकते हैं। –
@hvgotcodes: आमतौर पर दिन-प्रतिदिन के विकास में यह एक बड़ी समस्या नहीं है, लेकिन यह निश्चित रूप से कुछ प्रकार के पुस्तकालयों के लिए चीजों को मुश्किल बनाता है और इस तरह वास्तव में रनटाइम पर ऐसी जानकारी प्राप्त करने में सक्षम होना चाहिए। उदाहरण के लिए, गुइस लें, जिसे 'टाइप लिटरल' और इसकी उप-प्रकार की चाल जैसी चीजों की जानकारी के अभाव के आसपास काम करने की आवश्यकता है। अन्य प्रकार के पुस्तकालय हैं जो समान रूप से लाभान्वित होंगे। – ColinD