为什么要使用泛型?
在Java中增加泛型之前,泛型程序设计是用继承来实现的,例如ArrayList,只维护Object引用的数组:
1 public class ArrayList{ 2 private Object[] elementData; 3 4 public Object get(int i){...} 5 public void add(Object o){...} 6 }
在这里有一个问题,就是每次使用的时候,都必须进行一次强制类型转换
1 ArrayList list = new ArrayList(); 2 ... 3 String name = (String)list.get(0);
可以发现还没有错误检查,如果是其他类型会检测不到,当添加的时候,可以是任何类的对象
每次都转换一次很麻烦,用什么解决呢,类型参数!
ArrayList<String> list = new ArrayList<String>(); //在JAVASE 7以后的版本中,可以直接使用一下方法来声明了 ArrayList<String> list = new ArrayList<>();
简单泛型类
public class Pair<T>{ private T first; private T second; public Pair(){first = null; second = null;} public Pair(T first, T second){this.first = first; this.second = second} //get set
...
}
现在,我们可以像现在这样定义了
Pair<String> test1 = new Pair<>(); Pair<Integer> test2 = new Pair<>();
泛型方法
public class test{ public static <T> T first(T...a){ //... } }
但是需要注意的是,下面这几种,并不是泛型方法,不要混淆
1 public class test<T>{ 2 private T t; 3 4 //这个不是,只是一个普通的成员的方法 5 public test(T t){ 6 this.t = t; 7 } 8 //这个也不是,只是泛型类是形参 9 public void add(test<T> object){...} 10 }
吃饭了,下次接着写