इस उदाहरण पर विचार करें:एक ही स्थान पर कच्चे प्रकार कच्चे के रूप में इलाज के लिए कहीं और जेनेरिक कॉलसाइट क्यों करते हैं?
import java.util.*;
class Foo<T> {
public int baz(List<String> stringlist) { return 1; }
public int baz(ArrayList<Object> objectlist) { return 2; }
public static void main(String[] args) {
Foo<String> foo = new Foo<String>(); // (A)
//Foo foo = new Foo(); // (B)
System.out.println(foo.baz(new ArrayList<String>()));
}
}
(A)
में 1
क्यों प्रिंट करता है, लेकिन 2
(B)
के साथ?
मुझे पता है कि विधि समाधान कैसे काम करता है, इसलिए मुझे यह समझाने की कोई आवश्यकता नहीं है।
मैं इस "फीचर" के पीछे गहरी प्रेरणा जानना चाहता हूं। इसके बारे में कोई चेतावनी चेतावनी क्यों नहीं है? (Xzx31 के बारे में केवल एक है।) Xzx39
विधि संकल्प मिटाने वाले अर्थशास्त्र का उपयोग क्यों करता है हालांकि सामान्य प्रकार दिया जाता है?
निश्चित रूप से यह नहीं है। 'ArrayList के तत्व प्रकार को covariant के रूप में परिभाषित नहीं किया गया है। – soc