पर पैरामीटरयुक्त विधि के साथ अजीब व्यवहार क्या कोई मुझे बता सकता है कि यह संकलन त्रुटि क्यों देता है? मुझे नहीं लगता कि दूसरे फॉर-लूप में ए को कास्ट क्यों ऑब्जेक्ट्स की सामान्य सूची लौटने के लिए स्ट्रिंग्स() का कारण बनता है।अमूर्त वर्ग
import java.util.ArrayList;
import java.util.List;
public class E {
public static void main(String[] args) {
for (String s : new D().strings()) {
System.out.println("s = " + s);
}
for (String s : ((A) new D()).strings()) {
System.out.println("s = " + s);
}
}
static class D extends A<C> {
}
static abstract class A<T extends B> {
List<String> strings() {
return new ArrayList<String>() {{
add("Foo");
add("Bar!");
}};
}
}
static class B {
}
static class C extends B {
}
}
क्या यह एक जेनरिक क्विर्क है?
धन्यवाद, क्रिस्टियन
यह वाकई दिलचस्प है। यह बताता है कि अगर आप केवल ए के बजाय > पर आते हैं तो यह काम करता है। उस स्थिति में आप अभी भी एक टाइप की गई कक्षा का उपयोग कर रहे हैं। – Shaun
+1 इस महान उत्तर के लिए धन्यवाद। मैंने अपना जवाब हटा दिया, जो इस के रूप में उतना अच्छा नहीं था। – KLE
@ शॉन, यूप। आंशिक रूप से, कच्चे प्रकारों का उपयोग करने से बचने के लिए आपको परेशान करने की बात है! – notnoop