泛型知识点
泛型知识点
1、什么是泛型?
泛型是一种代码模板,使得一套代码适用于不同的类型。
如数组模板可放入不同类型的元素,而不用定义固定的类型。使得一套模板适用于不同类型。
2、如何定义泛型?多泛型定义?静态方法泛型定义?
步骤:
【1】先使用固定类型进行编写类,包含其中的字段
【2】将字段的类型替换为T,类名旁边加
小测验:
定义一个Pair类,有frist和second两个字段,将这两个字段定义为泛型
class Pair<T> {
private T first;
private T second;
public Pair(T first, T second) {
this.first = first;
this.second = second;
}
public void setFirst(T first) {
this.first = first;
}
public void setSecond(T second) {
this.second = second;
}
public T getFirst() {
return first;
}
public T getSecond() {
return second;
}
}
3、泛型的使用注意点
【1】 new class<> 这里方框中的类型,如果引用中已经指定就可以省略
【2】 List<Number> 和List <Integer>并不是父子类关系
4、泛型的原理,泛型的局限
泛型的原理是擦除法,编译器在编译时会将T给擦除为Object,当需要进行转型的时候编译器会去强转。
泛型的局限:
【1】不能用于基本类型,如int
【2】没有泛型的Class实例
【3】不能通过instanceof进行判断具体的泛型
【4】不能实例化泛型
【5】注意泛型调用的方法和object方法不要重名,如equals。
6、extends 和 super通配符
<? extends Number> 就可以传对应的子类泛型,但是只能调用get方法
<? super Number> 就可以传对应的父类型,但只能调用set方法

浙公网安备 33010602011771号