में विधि प्रकार अनुमान I वर्तमान में जावा कंपाइलर लिख रहा है और अनुभाग 15.12.2.7 लागू किया है। जेएलएस 7 (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.7), spec के सबसे कष्टप्रद वर्गों में से एक। मुझे अभी भी एक समस्या है क्योंकि spec किसी भी तरह से underspecified या संदिग्ध लगता है। मेरी समस्या यह है कि:जावा विशिष्टता
lcta (यू) =? यदि यू की ऊपरी सीमा वस्तु है, अन्यथा? लब (यू, ऑब्जेक्ट)
यू एक मनमाना प्रकार अभिव्यक्ति है। एक प्रकार अभिव्यक्ति की ऊपरी सीमा क्या है? इसके अलावा, लैक्टा हमेशा एक वाइल्डकार्ड क्यों है?
कल्पना को परिभाषित करता है
CandidateInvocation (G) = LCI (चालान (G))।
अब, उदाहरण के लिए, इस मामले पर विचार करें कि Inv (G) = {List < स्ट्रिंग >}, यानी, केवल संभावित उम्मीदवार आमंत्रण एक ही पैरामीटरयुक्त प्रकार है। अब, कारण शासन के लिए
LCI (जी < X1, ..., xn >) = जी < lcta (X1), ..., lcta (Xn) >,
का परिणाम CandidateInvocation (G) = LCI ({सूची < स्ट्रिंग >}) के रूप में परिभाषित किया जाएगा:
सूची < lcta (स्ट्रिंग) >
मेरी राय में, lcta सरल चाहिए लाइ रिटर्न स्ट्रिंग यहां, क्योंकि यदि सूची < स्ट्रिंग > एकमात्र संभावित आमंत्रण है, तो तर्क < स्ट्रिंगको तर्क के रूप में वर्णित करना एक अच्छा विचार है। हालांकि, लैक्टा (यू) की परिभाषा यह बताती है कि परिणाम या तो है? या? लब (...) बढ़ाता है, इसलिए परिणाम हमेशा एक वाइल्डकार्ड होता है। यह अजीब लगता है। मैं यहां गलत व्याख्या क्या कर रहा हूं?
मैंने अब lcta (यू) = यू लागू किया है जो ठीक काम करता प्रतीत होता है। अगर मैं किसी भी मामले को ढूंढता हूं तो मैं रिपोर्ट करूंगा कि यह कार्यान्वयन आश्चर्यजनक परिणाम उत्पन्न करता है।वैसे: लब (यू, ऑब्जेक्ट) हमेशा यू नहीं है, क्योंकि ऑब्जेक्ट हमेशा यू का एक सुपर क्लास होता है और इस प्रकार {यू, ऑब्जेक्ट} के कम से कम मिटाए गए उम्मीदवार एमईसी को हमेशा यू या उसके उप-वर्गों में से एक मिलना चाहिए? इस प्रकार, नियम वास्तव में पूरा बकवास है। एकमात्र चीज जो इसे बदलने के लिए अच्छा हो सकती है? ऑब्जेक्ट को बढ़ाता है? हालांकि, चूंकि यू एक प्रकार की अभिव्यक्ति है, इसमें वाइल्डकार्ड नहीं हो सकते हैं इसलिए यह मामला कभी नहीं उभर सकता ... वास्तव में अजीब। – gexicide
और मेलिंग सूची के साथ अच्छा विचार, मुझे लगता है कि मैं इसे कोशिश करूँगा – gexicide
मुझे लगता है कि लब (यू, ऑब्जेक्ट) = ऑब्जेक्ट – irreputable