一.为什么要使用泛型?
早期Object类型可以接收任意的对象类型,但在涉及到向下转型时就会存在安全隐患,这时引入泛型的概念
二.什么是泛型?
-
泛型,即“参数化类型”.
-
参数化类型,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后在使用/调用时传入具体的类型
三.泛型的使用方式
共有三种使用方式:
泛型类,泛型接口,泛型方法
1.泛型类
①基本泛型类示例
public class CommonResult <T>{
int code; //状态码
String message; //消息
T date; //数据
public T getDate() {
return date;
}
public void setDate(T date) {
this.date = date;
}
public static void main(String[] args) {
CommonResult<String> c = new CommonResult<>();
c.setDate("sss");
}
}
-
泛型的类型参数只能是类类型
-
泛型的参数类型可以有多个
-
如果没有定义参数类型,默认为Object类型
②.从泛型类派生子类:
-
若父类为泛型类,子类继承父类后也是泛型类;子类定义类型后,父类类型也相同
public class Child<T> extends Parent<T>{ T name; public static void main(String[] args) { Child<String> c = new Child<String>(); } }
-
若子类继承一个泛型类,如果子类没有定义泛型,那么父类的类型必须在声明时就定义下来
public class Child1 extends Parent<String>{ String name; public static void main(String[] args) { Child1 c = new Child1(); } }
2.泛型接口
-
泛型接口与泛型类的定义基本一致
-
只不过泛型接口为一个接口
3.泛型方法
-
顾名思义,泛型方法即为一个具有泛型的方法,与泛型类 定义基本一致
泛型方法的实例:
void test(<T> d){
System.out.println(d);
}