संभव डुप्लिकेट:
What’s the difference between <?> and <? extends Object> in Java Generics?सूची <?> बनाम सूची <? फैली हुई वस्तु>
मैंने पाया कि List<?>
और उसी तरह से List<? extends Object>
काम करते हैं। मेरे लिए, उनके बीच कोई अंतर नहीं है। अगर मैं सही नहीं हूं, तो क्या आप मुझे अंतर बता सकते हैं?
import java.util.ArrayList;
import java.util.List;
public class TestClass {
static void func1(List<?> o, Object s) {
o.add(null); // only null
o.add(s); // wrong
o.get(0); // OK
}
static void func2(List<? extends Object> o, Object s) {
o.add(null); // only null
o.add(s); // wrong
o.get(0); // OK
}
public static void main(String[] args) {
func1(new ArrayList<String>(), new Integer(1));
func2(new ArrayList<String>(), new Integer(1));
List<? extends Object> list1 = new ArrayList<Object>();
List<?> list2 = new ArrayList<Object>();
List<? extends Object> list3 = new ArrayList<String>();
List<?> list4 = new ArrayList<String>();
}
}
कोई फर्क नहीं पड़ता। 'ऑब्जेक्ट बढ़ाता है' अनावश्यक है और अन्यथा माना जाता है, जैसे 'कक्षा एफ ऑब्जेक्ट बढ़ाता है'। –
मैं शर्त लगाता हूं कि वे समकक्ष हैं, क्योंकि जावा में सभी वर्गों ने स्पष्ट रूप से 'ऑब्जेक्ट' का विस्तार किया है। – murgatroid99
कोई फर्क नहीं पड़ता, यह भाषा डिजाइन/व्याकरण का परिणाम है। – nullpotent