当前位置: 代码迷 >> J2SE >> 关于List<T> 之间相互转换的有关问题!
  详细解决方案

关于List<T> 之间相互转换的有关问题!

热度:129   发布时间:2016-04-23 19:52:00.0
求助 关于List<T> 之间相互转换的问题!急急急。。
请看下列代码:
class B extends A {}
class C extends A {}
class D extends B {}
下列说法正确的是:
 A. List<A>类型可以转换为List类型
 B. List<B>类型可以转换为List<A>类型
 C. List<D> 类型可以转换为 List<? extends B>.
 D. List<? extends A>类型可以转换为 List<A>.

哪个答案是正确的? 为什么 

求大神详细解答,感激不尽!!

------解决思路----------------------
AC 正确
A 中,将带有泛型的list可以转换为擦掉泛型的list
B 泛型不具有斜变性,所以
List<Object> objs = new ArrayList<Long>();  
是错误的,同理,List<B>类型不可以转换为List<A>类型
C <? extends Object> 表示泛型是 Object 或者是 Object 的子类型,D 是B的子类型,所以List<D> 类型可以转换为 List<? extends B>

  相关解决方案