मैं "प्रकार बेमेल: List<CherryCoke>
से List<Coke<?>>
को परिवर्तित नहीं कर सकते"क्या 'चेरी कोक्स' की सूची 'कोक्स की सूची' है?
यह एक 'चेरी cokes की सूची' की तरह दिखता है एक 'cokes की सूची' नहीं है। यह counterintuitive है। मैं इसे 'xs' कैसे बना सकता हूं, अगर इसे List<Coke<?>>
होना चाहिए और मुझे का उप-वर्ग होना चाहिए?
class Taste { }
class Cherry extends Taste { }
abstract class Coke<T extends Taste> { }
class CherryCoke extends Coke<Cherry> { }
class x {
void drink() {
List<Coke<?>> xs = Arrays.asList(new CherryCoke());
}
}
यहाँ याद करने के लिए सबसे अधिक उपयोगी परिवर्णी शब्द [पी ई सी एस] है (http://stackoverflow.com/questions/2723397/java-generics-what-is-pecs)। 'कोक >' कुछ विशिष्ट नहीं है, इसलिए आप यह नहीं कह सकते कि "कोक्स की एक सूची चेरी कोक्स की एक सूची है," लेकिन आप 'का उपयोग कर सकते हैं? कोक > 'बढ़ाता है। अधिक जानकारी के लिए मैंने जो प्रश्न जोड़ा है, उसे देखें। – Brian