Java泛型的基本介绍与使用
程序员文章站
2022-12-29 17:51:35
为什么要使用泛型? 在Java中增加泛型之前,泛型程序设计是用继承来实现的,例如ArrayList,只维护Object引用的数组: 在这里有一个问题,就是每次使用的时候,都必须进行一次强制类型转换 可以发现还没有错误检查,如果是其他类型会检测不到,当添加的时候,可以是任何类的对象 每次都转换一次很麻 ......
为什么要使用泛型?
在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 }
吃饭了,下次接着写