संभव डुप्लिकेट:
Is List<Dog> a subclass of List<Animal>? Why aren't Java's generics implicitly polymorphic?
Java Generics — Assigning a list of subclass to a list of superclassकच्चे प्रकार और जेनेरिक्स - जावा
कच्चे प्रकार के साथ आप आसानी से कुछ इस तरह कह सकते हैं।
[...] // MyClass is generic with upper bound of Object
MyClass c = new MyClass<Double>();
[...]
लेकिन इस
MyClass<Number> c = new MyClass<Double>()
मुझे समझ नहीं आता क्यों है अनुमति नहीं है। मेरी किताब मुझे, क्यों दूसरा काम नहीं करता है बताता है, क्योंकि आप एक MyClass<Double>
करने के लिए एक पूर्णांक नहीं जोड़ सकते। क्या यह बताते नहीं है क्यों MyClass<Double>
, MyClass<Object>
का एक उपवर्ग (या समतुल्य कच्चे प्रकार फार्म) है उसके बाद से दो वस्तु के उपवर्ग है।
तो क्यों पहले अनुमति दी है, तो दूसरा रूप नहीं है। कृपया महसूस करें कि मैं इसके लिए नया हूं।
संपादित करें: ले रहा है यह एक कदम आगे पहले उदाहरण में क्या होगा यदि संख्या ऊपरी बाध्य किया गया था?
आप यहाँ प्रकार विलोपन के प्रभाव
class Untitled {
public static void main(String[] args) {
}
public static<T> void c(T t)
{
t.SubClassMethod();// this won't work because class Object has no such method. But if I change the upperbound to SubClass it will.
t.toString() // this will because class Object has such a method
}
}
मेरे बिंदु कारण है कि यह कोई फर्क होना चाहिए कि क्या के रूप में अगर यह अंततः ऊपरी वैसे भी बाध्य के रूप में इलाज हो जाता है सामान्य घोषित किया जाता है है देख सकते हैं?
मेरा प्रश्न विपरीत है, मैं पूछ रहा हूं कि आप उप-वर्ग – rubixibuc
से कच्चे प्रकार को क्यों असाइन कर सकते हैं, इस प्रश्न के लिए आधार गलत है, क्योंकि टाइप एरर की वजह से केवल चिंता ही है कि ऊपरी बाउंड के साथ काम करता है विधि, और कास्टिंग के लिए जांचने के लिए प्रकार का उपयोग करता है। कम से कम यही मैंने पढ़ा है – rubixibuc