1、泛型的概念及做用安全
一、泛型的概念this
Java中的泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操做的数据类型被指定为一个参数。spa
这种参数类型能够用在类、接口和方法的建立中,分别称为泛型类、泛型接口、泛型方法。 对象
Java语言引入泛型的好处是安全简单。接口
例如:get
Class ArrayList<E>:声明一个泛型类ArrayList,其中E可使用任意一个具体类型替代,泛型类型每每使用一个大写字母表示。编译
Public boolean add(E o):E是泛型,也就是说,使用add方法时,能够为其传递任意一种类型的参数。其中此处的E是在类中定义的。class
二、泛型的做用泛型
Java中泛型的做用:简单安全变量
在编译的时候检查类型安全,而且全部的强制转换都是自动和隐式的,提升代码的重用率;
消除代码中的强制类型转换,同时得到一个附加的类型检查层,该检查层能够防止有人将错误类型的值保存在集合中。
2、泛型类
声明类名后使用<E>(E能够是任何其余字母),便可以指定该类是一个泛型类;
类型参数能够在该类中须要数据类型的地方使用,如属性声明、方法声明等。
例如:
public class Poot<E> {
private E ota;
public Poot(){
}
public E getOta() {
return ota;
}
public void setOta(E ota) {
this.ota = ota;
}
3、泛型方法
全部泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型以前(在下面例子中的<E>);
例如:
public <E> E getX(E x){
return x;
}
每个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符;
类型参数能被用来声明返回值类型,而且能做为泛型方法获得的实际参数类型的占位符;
泛型方法体的声明和其余方法同样。注意类型参数只能表明引用型类型,不能是原始类型(像int,double,char的等)。
注意:是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。
4、泛型接口
泛型接口,与泛型类彻底相同
Public interface TestGenerics<T> {
Public T getT(T t);
Public String assume(T t);
}
Comparable接口是泛型接口
public interface Comparable<T> {
public boolean compareTo(T other);
}
Comparable 接口包含一个类型参数 T,该参数是一个实现 Comparable 的类能够与之比较的对象的类型。这意味着若是定义一个实现 Comparable 的类,好比 String,要声明它可与什么比较(一般是与它自己比较)。
public class String implements Comparable<String> {
...
}