有了泛型的好處就是在編繹期你的代碼就能被檢測出問題來。
比如你有一個類是水果類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