有了泛型的好处就是在编绎期你的代码就能被检测出问题来。
比如你有一个类是水果类class Fruit{...}
然后你的代码中把T全换成Fruit,那么以后你往ArrayList里面就只能加入Fruit及子类(如苹果,梨等),不然会直接报错。也就是你告诉编绎器说:在我的这个容器里面我只要加水果类,如果我误加了别的类(如铁类,人类,球类)请马上告诉我。
如下面源代码,为什么前面要加上<T>呢?
privateListcashFutures(List> futures) { Listvalues = new ArrayList(); for (Futurefuture : futures) {
try {
values.add(future.get());
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
return values;
}
这个方法返回值前也加个<T>的话,这个T就代表该方法自己独有的某个类,而不去和类中限定的T产生冲突,直接换成<E>会更容易理解的。
示例:http://bbs.csdn.net/topics/390171178