泛型中的<?>在什么情况下使用?

泛型中的<?>在什么情况下使用?

可以参考下我blog的文章

http://lovewhzlq.iteye.com/admin/categories/75427

能用泛型的地方尽量不要用原生态类型。
比如最好定义成: List list=new ArrayList();
而不要定义成: List list=new ArrayList();

理由:
(1) 增加代码可读性。
(2) 避免不小心而造成的错误。
原生态集合存储的类型默认为Object。这样list可以同时存储多种不同类型的对象。
String a=new String("你好");
Integer b=new Integer(1);
list.add(a);
list.add(b);
for(int i=0;i<list.size();i++){
((String) list.get(i)).split("a");
}
这样写绝对不会在编译的检查出报错,但运行的时候一定抛一个ClassCastException的非检查异常。因为Integer类是没有split方法的。
这种不小心而造成的编译通过,运行异常的问题是很难发现的。所以泛型在这方面有很大的好处。还有一点,不用泛型,返回类型也是Object的,那么势必要强值类型转化,随也不希望在程序类写一大堆强值类型转化,太容易出错了。