JAVA泛型
2021-10-28 16:24:08 17 举报
AI智能生成
初识Java泛型
作者其他创作
大纲/内容
泛型概述
泛型的本质?
类型参数化
类和接口的元素类型推迟到创建、泛型方法的元素类型推迟到方法调用
为什么引入泛型,带来了什么好处?
和数组一样,限定类型后将运行时异常可以提前在编译期就暴露
解决了存储数据的不安全性
省略了代码中的强制类型转换
泛型详解
泛型类、接口
定义格式
public class Generic<T> {} 其中T为标识符
注意事项
泛型类是在使用这个类的时候(创建这个类的对象的时候)指定的类型
泛型方法
定义格式
例:方法 public <T> void generic(){} 其中T属于标识符
注意事项
泛型方法独立于类
泛型方法中的泛型是在调用当前泛型方法时指定的
如何解决协变
泛型通配
通配 <?>
表示任意类型,等同于Object,开发中不建议使用,一般会使用泛型限定来代替通配(不安全)
泛型限定
上界限定 <? extends E>
限定条件为 ?为 E或者E的子类
下界限定 <? super E>
限定条件为? 为E或者E的父类
数组可以协变
泛型擦除
无限制类型擦除
类型由T变成Object
有限制类型擦除
类型由 <? extends Number> 变成Number
桥接方法擦除
接口中有泛型,擦除后接口中方法变为Object,实现类通过桥接方法保证接口和类的实现关系
泛型数组
可以声明带泛型的数组引用,但是不能直接创建带泛型的数组对象
可以通过java.lang.reflect.Array的newInstance(Class<T>,int)创建T[]数组
泛型在反射方面的应用
Class<T>
Constructor<T>
0 条评论
下一页