KTV和泛型(3)

泛型除了KTV,还有一个让人比较疑惑的玩意,而且它就是用来表达疑惑的:?

虽然通过泛型已经达到我们想要的效果了,例如:

List<String> list = new ArrayList<String>();

这样就可以放心地存取String类型的数据。

但是(抱歉,凡事总有个但是),应用的场景总是在不断增加的。某一天:

老板:咱们之前给客户开发的功能中有个地方要改一改。

神牛:哪里要改呢?

老板:以前你写的代码List<Cat> list = new ArrayList<Cat>();只能列出Java宠物店托管的猫咪,但是现在Java宠物店已经扩大了经营范围,希望列出他们保管所有的宠物,只要是宠物就行……

神牛:这个easy!

老板:真的吗?

于是,神牛一通操作,代码就改成了这样:

class Cat extends Pets {};

class Dog extends Pets {};

public static void main(String[] args) {
    List<? extends Pets> list = new ArrayList<Pets>();
    Pets pets = list.get(0);
    Cat cat = (Cat)list.get(1);
    Dog dog = (Dog)list.get(2);
}
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » KTV和泛型(3)