Java类型转换问题[重复]

|                                                                                                                   这个问题已经在这里有了答案:                                                      
已邀请:
Java泛型不支持协方差,因此
Vector<B>
不会扩展
Vector<A>
    
这样想吧; 如果
C
也扩展
B
,则可以将
C
放入
Vector<B>
。 现在,如果您可以将其转换为
Vector<A>
,而您又做了
get
,那么您将获得
C
的实例! 那没有多大意义,因此编译器不允许这样做。正如@amit所说,协方差就是这个名称。 看到这个帖子     
变量的类型必须与您传递给实际对象类型的类型匹配。 关于泛型类型的多态性,java不允许您执行以下操作:
class A { } 
class B extends A { } 
List<A> myList = new ArrayList<B>();
这是因为在编译时,编译器摆脱了通用类型(通过称为类型擦除的类型),并且确实是在Java 5之前的代码中使用的。这很混乱,因为它与数组的行为不同。使用数组,您可以执行以下操作:
A[] myArr = new B[10];
但是泛型不是这种情况。同样,当涉及泛型时,变量的类型必须与您传递给实际对象类型的类型匹配。 希望有帮助!     

要回复问题请先登录注册