http://www.cnblogs.com/sunwei2012/archive/2010/10/08/1845938.html
泛型的内容很多。这篇文章写的不错
/**
* 返回一个不可修改的List
*
* @return
*/
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return Collections.unmodifiableList(list);
}
上面的这个函数仅仅是封装了Collections的函数。
其中static后面的<T>的含义是,声明一个泛型,表示该函数的泛型类型。上面的函数表明该函数持有一个泛型T。
/**
* 返回map的所有key
*
* @return
*/
public static <K, V> List<K> test(Map<K, V> map) {
List<K> list = new ArrayList<K>();
Iterator<K> it = map.keySet().iterator();
while (it.hasNext()) {
K k = it.next();
list.add(k);
}
return list;
}
这个test函数的声明<K,V>表明该函数持有两个泛型类型,K和V。
-------------------------------------------------------
<T>和<K,V>是必须有的,不然函数会不认识函数体中写的T、K、V具体是什么。