泛型
1、什么是泛型?
泛型是实现了参数化类型的概念,术语意思是:“适用于许多类型”。这种参数类型 可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
ii、泛型接口
以上泛型类和泛型接口中,用尖括号加英文字母大写就是我们俗称的泛型。
2、定义泛型类
语法:类名<T>
说明 : 在定义泛型类时,一般类型名称使用T来表达,而容器的元素使用E来表达。
3、泛型的常规用法
i、定义泛型类时,可以声明多个类型。语法:
MutiOverClass<T1,T2> MutiOverClass:泛型类名称ii、定义泛型类时声明数组类型,比如以下代码:
public class ArrayClass<T>{ //定义泛型类 private T[] array; //定义泛型数组 public T[] getArray(){ //获取学生数组 return array; } public void setArray(T[] array){ //设置set方法为学生赋值 this.array = array; } public static void main (String[] args){ ArrayClass<String> a = new ArrayClass<String>(); String[] array ={"学生1","学生2","学生3","学生4","学生5"}; a.setArray(array); //条用set方法 for(int i = 0;i < a.getArray().length;i++){ System.out.println(a.getArray()[i]); //调用getArray()方法返回数组中的值 } } }运行结果如下:
在此代码中定义泛型类时声明一个学生数组,数组的类型为泛型,然后在泛型类中相应的设置set()和get()方法。虽说可以用泛型来声明一个数组,但是不可以使用泛型来建立数组的实例,下面的代码就是错误的:
这里会报一个Cannot create a generic array of T(不能创建一个泛型数组)这样的错,由此可见,泛型不能直接建立数组。
4、泛型的高级用法
i)、继承泛型类与实现泛型接口
a、 创建一个类文件,在该类中继承泛型类 :
public class ExtendClass<T1>{ } class SonClass<T1,T2,T3> extends ExtendClass<T1>{ }在此要说明泛型可以比父类多,但是绝不可以比父类少
b、 创建一个类文件,在该类中实现泛型接口 :
interface TestInterface<T1>{ } class SonClass2<T1,T2,T3> implements TsetInterface<T1>{ }5、泛型总结
1、泛型的类型参数不可以是基本类型
2、 泛型的类型个数可以是多个
3、 定义的泛型接口也可以被实现
4、 不能直接用泛型来创建数组