课程名称:Java体系课
章节名称:泛型及其应用
课程内容:
- 泛型的概念及规则
- 自定义泛型类
- 泛型方法的使用
- 泛型的匹配规则
学习收获:
- 概念
- 一种语法特征,就是允许在定义类、接口、方法时使用类型形参(泛型),这个类型形参将在声明变量、创建对象、调用方法时动态地指定,进而让程序具有编译时检查能力
- 最常见的泛型应用场景便是在使用集合时通过泛型指定集合内对象的类型,为程序代码提供了编译时纠错的能力
- 对编程加以约束
- 规则
- 集合的泛型必须保证引用类型和对象完全一致
- 泛型猜想:集合的泛型可以在对象类型位置缺省,但不能在引用类型位置缺省
List<Animal> list = new ArrayList<>;
- 创建自定义泛型类
自定义泛型类,需要在类名后增加“<标识符>”,如下所示:
public class SampleClass<T>{...}
即在定义类的时候定义了一个特殊的可变的类型,该类型会用在程序处理过程中
public class CollectionUtils<E> {
private List<E> data = new ArrayList();
public void add(E element){
data.add(element);
}
public E randomSelect(){
int idx = new Random().nextInt(data.size());
E ret = data.get(idx);
return ret;
}
- 泛型方法的使用
JDK 1.5以后还提供了泛型方法的支持,允许在类没有声明泛型的前提下让方法独立使用泛型进行开发
public class PtMethod {
//泛型方法,要求返回值类型与参数类型保持一致
public <T> List<T> transferToList(T[] array){
List<T> list = new ArrayList();
for(T item : array){
list.add(item);
}
return list;
}
public static void main(String[] args) {
PtMethod ptMethod = new PtMethod();
String[] array = new String[]{"A", "B", "C", "D", "E"};
List<String> list = ptMethod.transferToList(array);
System.out.println(list);
}
}
- 泛型的匹配规则
泛型是精准匹配,当明确指定泛型类型后,就必须强制使用该类型传入,该类型的子类也同样会报“类型不匹配”错误
为了增加泛型的匹配范围,可以使用泛型通配符<?>,<?>表示所有类型均可传人
通过extends与super限定范围,extends决定了上限,super决定了下限(extends关键字代表必须传入Shape或者子类才通过检查)(super关键字代表必须传入Rectangle或者其父类才能通过检查)
课程截图
总结:
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦