मेरे कोड:मुझे जेनेरिक टाइप टी में क्यों डालना चाहिए, भले ही मुझे पता चले कि यह सही ढंग से लौटाता है?
private static <T> T get(Class<T> clazz) throws IllegalAccessException, InstantiationException {
if (clazz.equals(String.class)) {
return (T) new String("abc");//line x
} else {
return clazz.newInstance();
}
}
जैसा कि आप देख, line x
में, T
String.class
रहना होगा और String
देता है। लेकिन T
पर परिणाम कास्टिंग किए बिना संकलित विफल रहा।
line x
return new String("abc");
परिणाम Incompatible types
बदलें।
यह वास्तव में नहीं है कि टेम्पलेट्स का क्या अर्थ है। बेशक, यह आपके लिए स्पष्ट है कि यह हमेशा कुछ प्रकार के टी को वापस कर देगा - लेकिन यह संकलक के लिए स्पष्ट है? यदि टी स्ट्रिंग नहीं है, तो अभी भी कुछ मार्ग (सुलभ या नहीं) है जो गलत प्रकार देता है। – JArkinstall