为什么 Array.newInstance(Class<?>, int) 不是通用的?
我的意思是,这有什么好的理由吗?该方法具有以下签名:
public static Object newInstance(Class<?> componentType,
int length)
throws NegativeArraySizeException
在我看来,将方法声明如下会更方便:
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