欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 }

吃饭了,下次接着写