Day14_Java_泛型
在编译阶段进行类型检查
集合中使用泛型的语法:
List<泛型>:当前List只能放该类型
Set<泛型>:
Map<泛型1,泛型2>
例子:
使用Map保存一个复杂的数据结构
key值为学生或者人类
value值为该学生或者人类的地址列表
手写一个Map做类型检查
泛型的类型擦除
泛型的类型检查只是在编译阶段帮助控制输入的类型,减少或者避免ClassCastException,编译器编译成功后泛型会被擦除,也就是说.class不存在泛型
反射原理:跳过编译阶段,直接修改Runtime的数据可以直接跳过编译阶段在你的泛型定义的list中add泛型之外的类型
泛型是JDK1.5之后提出的概念,1,7之后提出菱形语法(钻石语法)
泛型类
语法:class 类名<泛型>
泛型方法:
在泛型类中写泛型方法:直接使用功能类中定义的泛型即可
在普通类中写泛型方法:
在方法的修饰符后面,返回值前添加<泛型参数>,作用域该方法
泛型接口:
语法:interface 接口名<泛型>{抽象方法}
实现类要实现该接口,如果不写明泛型,则实现的粉的参数返回值都为Object,所以要根据实际需求在实现接口的时候写明泛型
泛型类的继承:
如果子类要继承泛型父类,需要继承父类的所有泛型,如果不需要继承泛型,则需要写明父类的泛型
1.在集合中会使用泛型
2.学会写简单的泛型类
泛型中的通配?
?通配无范围或者无边界的类型,使用?通配的集合,不可使用add方法添加元素,只能添加 null元素;在编译阶段并不清楚需要什么类型;
泛型的上限和下限
下限:泛型参数super Number
上限:泛型参数extends Number
Collections:集合中的工具类
查找
排序
调换位置
倒叙输出
随机打乱原集合中的工具类
Arrays:数组中的工具类