निम्न संकलन क्यों करें? मैं एक चेतावनी मुझे बता कियह संकलन क्यों करता है? टाइप करें
getTest मिल() तो getTestIntegers एक कच्चे प्रकार() मिटाए जाने
रिटर्न लेकिन मुझे समझ नहीं आता क्यों, getTestIntegers()
साधारण नहीं है। मैं List<String> tester = Test.getTest().getTestIntegers()
अपेक्षा की होगी एक संकलन त्रुटि
public class Scratchpad {
public static void main(String[] args) {
new Scratchpad().run();
}
private void run() {
List<String> tester = Test.getTest().getTestIntegers();
}
private static class Test<T> {
public static Test getTest() {
return new Test();
}
public List<Integer> getTestIntegers() {
return Collections.singletonList(1);
}
}
}
चेतावनी का कहना है के रूप में, विधि 'getTest' कच्चे प्रकार' Test' देता है। ऐसा नहीं करना चाहिए; आपको उस विधि में एक प्रकार पैरामीटर जोड़ना चाहिए। जब आप कच्चे प्रकार का उपयोग करते हैं, तो कंपाइलर पिछड़ा संगतता मोड में जाता है और चीजें आपके जैसी अपेक्षा नहीं करती हैं। देखें: [कच्चा प्रकार क्या है और हम इसका उपयोग क्यों नहीं करना चाहिए?] (Http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use -it) – Jesper
लिंक के लिए धन्यवाद, खंड "एक कच्चा प्रकार उस प्रकार का क्षरण है" इसके साथ सौदा करता है और यह स्पष्ट रूप से जेएलएस में है। लेकिन मुझे क्या नहीं मिला है क्यों? 'GetTestIntegers()' को मिटाने की आवश्यकता के लिए तर्क क्या है? –