一.泛型的定义
定义:以参数化类型 提高代码重用性 在编译期强制进行类型检查的机制
ArrayList<Student> alist = new ArrayList<>();
alist.add(学生对象);
<标识符> 泛型
二.泛型类 泛型接口 泛型方法
泛型类:
泛型类是使用类型形参定义的类。
语法格式
class 类名<类型形参>{
}
声明的时候 是泛型形参
创建类对象的时候 给定泛型实参 具体泛型的数据类型是什么
三种写法
Generic g = new Generic<>();
没写泛型实参 默认Object类型
Generic<String> g2 = new Generic<>();菱形语法
Generic<String> g2 = new Generic<String>();
泛型接口:
泛型接口是使用类型形参定义的接口
语法格式
interface 接口名<泛型形参>{
}
泛型方法:
泛型方法是声明并使用类型形参定义的方法。
语法格式
[修饰符] <泛型形参> 返回值类型 方法名([形参列表]){
}
注意:
当一个方法 被声明为静态方法时候 假设方法使用了泛型
那么该方法必须被声明为泛型方法
三.泛型类的应用
四.泛型的通配符
定义:泛型通配符是在泛型中用来表示指定范围引用数据类型的特殊字符。
分为 无边界通配符 ? 默认匹配Object类,即可以匹配任意引用类型的对象
固定上边界通配符 <? extends 上界类>
类型可以是上界类自身或其子类
固定下边界通配符 <? super 下界类>
类型实参可以是下界类自身或其超类。
假设
class Animal{} 动物
class Person extends Animal{} 人类
class Student extends Person{} 学生类
class Pig extends Animal{} 猪
class Bird extends Animal{} 鸟
class Child extends Student{} 孩子
<? extends Person>
Person Student Child
<? super Person>
Person Animal
public void show(Person p)
public void show(Student stu)
public void show(Child c)