目录
泛型简介
什么是泛型?
参数化的数据类型,定义时指定类型占位符,使用时传入具体的数据类型,编译时进行类型约束
泛型类和接口
泛型类就是把泛型定义在类上面
泛型类格式:
public class 类名 <泛型类型1,...> {}
注意:泛型类型必须是引用类型(非基本数据类型)
T:任意类型 type
E:集合中元素的类型 element
K:key-value形式 key
V: key-value形式 value
N: Number(数值类型)
?: 表示不确定的java类型
泛型接口格式:
public interface 名字<T>{}
泛型方法:
泛型方法就是把泛型定义在方法上。
泛型方法格式:
public <泛型类型> 返回类型 方法名(泛型类型 变量名) {}。
泛型通配符:
为什么要用通配符和边界?
通配符可以帮助我们定义灵活的泛型类型,使其能够匹配不同的实际类型。在泛型代码中,问号(?)称为通配符,用来表示未知类型。通配符可以在多种情况下使用:如作参数、字段或局部变量的类型;有时也可以作为返回类型。
固定上边界的通配符,采用<? extends E>的形式 ;
固定下边界的通配符,采用<? super E>的形式 。
泛型擦除
泛型擦除怎么理解?
编译时会将泛型的类型信息擦除,字节码文件中没有了类型约束,普通类型:Object,