java泛型
java 泛型 很多朋友对java的泛型不是很理解,很多文章写的已不是很清楚,这篇博客对java泛型进行 一个总结。 1.泛型的转换 List foo1 = new ArrayList();//illegal 很多朋友会写出上面的代码,但会报如下错误:Type mismatch: cannot convert from ArrayList to List 尽管Interge是Number的子类,但是ArrayList不是List的子类,所以报错。下图可以很好解释这个问题。 2.java泛型的通配符? 这里可以分为两类(1)? extends T (2) ? super T. 很多朋友对这两个不是很理解,也不知道上面时候用,我们知道java中提供泛型技术,是为了提供安全检查的,使得我们写的代码更加的健壮。 2.1 ? extends T public static void print_e(List<? extends Number> list){ for(Number n : list){ System.out.println(n); } } 上面一个函数,我们可以传递如下的参数 List<Integer> list_i = new ArrayList<Integer>(); for(int i=0;i<10;i++){ list_i.add(i); } List<Double> list_d = new ArrayList<Double>(); for(int i=0;i<10;i++){ list_d.add(i+0.0); } print_e(list_i); print_e(list_d); 使得我们写的代码即具有通用型有可以提供必要的安全检查,当然print_e你可以写出如下形式,这里就不具有安全检查的效果了。 void print_e(List list) 但是经常有的朋友写出如下的代码,我们举一个stackoverflow上的一个例子:...