Class<? extends Number> a = Integer.class;这样创建是可以的,但是为什么下面的语句就不行了呢?Class<? extends Number>[] b = {Integer.class, Double.class};提示错误为:Cannot create a generic array of Class<? extends Number>还请大家帮助解释下,谢谢了!
Class<? extends Number> a = Integer.class;这样创建是可以的,但是为什么下面的语句就不行了呢?Class<? extends Number>[] b = {Integer.class, Double.class};提示错误为:Cannot create a generic array of Class<? extends Number>还请大家帮助解释下,谢谢了!
HOME_ning(玩物丧志)
这确实是一个遗憾!!
Class<? extends Number>[] b ;
b=new Class[2];
b[0]=Integer.class;
b[1]=Double.class;猜测如下:
1. Class<? extends Number>[] b 声明一Class数组,只接受继承树上Number以下的类的类对象。
2.创建数组时要求所有元素属于同一类,{Integer.class, Double.class}要求创建Class<? extends Number>[],未满足所有元素属于同一类这一要求。
3.给数组元素赋值时可以将满足要求的对象赋给数组元素(比如泛型或通过 instanceof检测)。 用下面实例检验了下:
Class<? super Double>[] b ;
b=new Class[2];
b[0]=Number.class;
b[1]=Object.class;上面只是猜测。