定义
public static void printList(List<?> list) {
for (Object elem : list){
System.out.println(elem + " ");
}
}
public static <T> void printList2(List<T> list) {
for (T elem : list){
System.out.println(elem + " ");
}
}
使用
MyList.printList(Arrays.asList(1, 2, 3));
MyList.printList2(Arrays.asList(1, 2, 3));
伊谢尔伦2017-04-18 10:50:45
這個效果是一樣的,並非
但第二種用法在實際的開發中起不到任何作用。為什麼呢,除非泛型是聲明回傳值的類型,或是聲明在類別層次的。比如說
private static <T> T fun1(List<T> list) {
}
或者是
public interface Main<T> {
public void fun(T t);
}
//然后
public class MainImpl<String> {
@override
public void fun(String str) {
}
}
這才起到了作用。
否則,像這樣用 public static <T> void fun1(List<T> list)
這裡的泛型起到了什麼作用?真沒看出來起了什麼作用。應該說,沒必要這樣用吧。