Java泛型


泛型机制是1.5引入的特性,本质是参数化类型。在类,接口和方法的定义中,所操作的数据类型被传入的参数指定。


可以在类中使用,可以在方法中使用,可以在集合中使用......


1、泛型在集合中的运用


Java泛型机制广泛的运用在集合框架中,所有的集合类型都带有参数,这样在创建集合时可以指定放入集合中对象类型。


//List list = new ArrayList();//这样我们可以使用任何类型,要指定一种类型。

List list = new ArrayList();

//现在就指定了只能放入字符串。而且在获取的时候,不需要造型。

list.add("s");

for (int i = 0; i < list.size(); i++) {

String str = list.get(i);//不需要造型,因为不是Object

System.out.println(str);

}

/*

* 如果使用迭代器我们也需要泛型

*/

Iterator it = list.iterator();

while (it.hasNext()) {

  String string = it.next();

}

//或者

for (Iterator ite = list.iterator(); ite.hasNext();) {

   String string = ite.next();

}


1)泛型定义在类名之后,<>之间;


2)泛型可以是字母和数字的组合,但是第一个字符必须是字母;


3)多个泛型之间用“,”分开;


4)泛型可以约束属性,方法的参数和方法的返回类型。


class Point{

   private E x;

   private E y;

   public Point(E x, E y) {

       this.x = x;

       this.y = y;

   }

   public E getX() {

       return x;

   }

   public void setX(E x) {

       this.x = x;

   }

}

//Point p = new Point(1,2);

//System.out.println(p);

//在使用的时候要给确切的类型

Point p = new Point(1.2,20.2);

System.out.println(p);


//我们不止可以指定一个类型,如下:

class Point1{

   private E x;

   private Y y;

   public Point1(E x, Y y) {

       this.x = x;

       this.y = y;

   }

}


在使用支持泛型的类时候,如我们不指定泛型类型,默认情况下泛型指定的就是Object。