泛 型
Java中的参数化类型被称为泛型,以集合为例,集合可以使用泛型限制被添加元素的数据类型,如果将不符合指定数据类型的元素添加到集合内,编译器就会报错,例如,Demo<String>表明Demo集合只能保存字符串类型的对象,如果将非String类型的对象添加到Demo集合中,编译器就会报错,如下图所示:
说明:因为123的数据类型为int型,而Demo<String>表明Demo合集只能保存字符串类型的对象,所以编译器就会报错。
定义泛型类
定义泛型类的语法如下:
class 类型<T>
其中T代表被传入参数的数据类型,例如,定义个带泛型Book<T>类,传入integer、float、String、boolea、Double数据类型,代码如下:
public class Demo<T>{
T dy;
public void set(T dy) {
this.dy = dy;
}
public static void main(String[] args) {
//创建String数据类型对象
Demo<String> str1 = new Demo<String>();
str1.set("123");
//创建Integer数据类型对象
Demo<Integer> str2 = new Demo<Integer>();
str2.set(123);
//创建Boolean数据类型对象
Demo<Boolean> str3 = new Demo<Boolean>();
str3.set(true);
//创建Float数据类型对象
Demo<Float> str4 = new Demo<Float>();
str4.set(1.2F);
//创建Double数据类型对象
Demo<Double> str5 = new Demo<Double>();
str5.set(1.3);
}
}
说明:在定义泛型类时,一般类型名称使用T来表示,也可以定义别的名称。
泛型的用法
在开发过程中,如果需要动态地指定参数类型,那么就需要使用泛型,泛型的用法:定义泛型类时声明多个类型、定义泛型类时声明数组类型和集合类声明元素的类型。
定义泛型类时声明多个类型
在定义泛型类时,可以声明多个类型,语法如下:
class Demo<T, A, B, C>
其中,Demo为泛型类名称,T,A,B,C代表被传入参数的类型。
如果T,A,B,C分别代表float、String、boolea、Double数据类型,那么使用泛型类Demo<Float,String,Boolean,Double>的有参数构造方法,代码如下:
Demo<Float,String,Boolean,Double> ty = new Demo<Float,String,Boolean,Double>(1.2F,"123",true,1.3);