?和T还是有区别的,T代表任意类型,?也代表任意未知类型,多了个未知,意思就是不能够用?来声明对象
比如 private static void iteratotCollection(Collection<?> coll) {
Iterator<?> it=coll.iterator();
while(it.hasNext()){
? obj= it.next();//这里是编译不通过的。不能用?来声明obj
System.out.println(it.next());
}
}
上面代码如果用泛型方法T来表示
private static <T> void iteratotCollection(Collection<T> coll) {
Iterator<?> it=coll.iterator();
while(it.hasNext()){
T obj=it.next();这是可以的
System.out.println(it.next());
}
}
|