मेरा मतलब है, क्या इसके लिए कोई अच्छा कारण है?क्यों Array.newInstance (कक्षा <?>, int) सामान्य नहीं है?
public static Object newInstance(Class<?> componentType,
int length)
throws NegativeArraySizeException
मेरी राय में, यह बहुत अधिक convinient होगा इस प्रकार प्रणाली की घोषणा करने के लिए: method के निम्नलिखित हस्ताक्षर मिला
public static <T> T[] newInstance(Class<T> componentType, int length)
throws NegativeArraySizeException
इस तरह, सामान्य प्रकार का एक aray बनाते समय अतिरिक्त कास्टिंग करने के लिए यह निष्पक्ष नहीं होगा, उदाहरण के लिए
public class Gen<T>{
private T[] a;
public static <T> Gen<T> createByClass(Class<T> clazz){
a = clazz.cast(Array.newIntance(clazz.getComponentType(), 8); //we have to invoke
//clazz.cast here.
}
}
वहाँ किसी भी अच्छा Object
के रूप में वापसी मान प्रकार की घोषणा करने के कारण था? मेरे लिए यह बहुत ही कमजोर लगता है।
सबसे पहले, मुझे संदेह है कि यह जेनेरिकों की भविष्यवाणी करता है। दूसरा, मुझे यकीन नहीं है कि 'int.class' आदि के लिए क्या होगा। –
@ जोन्स स्केट' int.class' का उल्लेख करते समय आपका क्या मतलब है? मैंने सोचा था कि प्राइमेटिव्स के क्लास ऑब्जेक्ट्स का अनुरोध हमेशा उनके संदर्भ रैपर क्लास ऑब्जेक्ट को देता है ... –
नहीं, निश्चित रूप से नहीं - अगर आप 'Array.newInstance (int.class, 5) कहते हैं, तो आपको' int [] 'वापस मिल जाएगा , एक 'इंटीजर [] 'नहीं। –