首页 > 其他 > 详细

Java

时间:2014-01-16 00:13:10      阅读:352      评论:0      收藏:0      [点我收藏+]

通配符泛型

Test<SubObject>继承Test<? extends BaseObject>

Test<SubObject>和Test<T extends BaseObject>无任何关系

高级别数组可以赋给低级别数组,反之则不可以。

SubObejct[] objects=...

BaseObject[] baseObjects=objects;

java泛型都会擦除泛型类型,泛型类型转换为Object,如果使用extends,则转换为基类类型,不能用instanceof判断类型

java一般不能使用==判等,需要使用equal,==只比较引用相同

 

?super SubObject 通配符超类型,支持set

?extends BaseObject 支持get

 

向上造型一个泛型对象的引用

例如,假设我们有很多箱子,每个箱子里都装有不同的水果,我们需要找到一种方法能够通用的处理任何一箱水果。更通俗的说法,A是B的子类型,我们需要找到一种方法能够将C<A>类型的实例赋给一个C<B>类型的声明。

为了完成这种操作,我们需要使用带有通配符的扩展声明,就像下面的例子里那样:

  1. List<Apple> apples = new ArrayList<Apple>();
  2. List<? extends Fruit> fruits = apples;

“? extends”是泛型类型的子类型相关性成为现实:Apple是Fruit的子类型,List<Apple> 是 List<? extends Fruit> 的子类型。

向下造型一个泛型对象的引用

现在我来介绍另外一种通配符:? super。如果类型B是类型A的超类型(父类型),那么C<B> 是 C<? super A> 的子类型:

  1. List<Fruit> fruits = new ArrayList<Fruit>();
  2. List<? super Apple> = fruits;

Java

原文:http://www.cnblogs.com/czcuestc/p/3516874.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!