视频软件App开发引领数字内容创作与分享的新时代
726
2022-10-19
数据结构:泛型
一、泛型
1.1、泛型介绍:
什么是“泛型”???“泛型”的作用是什么???
我们都知道 Object 是所有类的父类,因此我们可以设置一个 Object 数组来接收所有的类,并设置相对应的数据类型从这个 Object 数组里面获取到相对应类型的元素。理论上来说是可以的:::
当我们完成上述代码并运行时会发现:类型不匹配的问题!这就是因为虽然我们知道下标为 0 的元素是 String类型的“hello”,但对于这个数组来说存放的不止 String 一种类型,所以系统无法判定是否正确。因此要想解决这种问题只需要 强制类型转换 即可:
此时就不会再报错。但是这种办法更为麻烦:因此就会引入 “泛型”
class NewMyArray
上述代码就简单的实现了一个 泛型类 ,
class NewMyArray
1.2、擦除机制
在 泛型代码 编译的过程中会将所有的 T类型 都转换为 Object类型 ,这就是“擦除机制”。
这里还涉及到T[] t = new T[10]为什么会报错呢?难道不是等同于Object[] object = new Object[10]吗?
这里就涉及到 “擦除机制” ,因为在代码编译的时候 T类型 会被擦除为 Object类型 然而在返回的时候: Object数组 里面存放的一定是 Integer类型 的吗???因此在这里如果直接用 Integer类型数组 接收编译器认为是不安全的
1.3、泛型上界
在“寻找数组最大值”的代码里面if(max < array[i])代码报错:这是因为代码在编译时 T类型被擦除为了 Object类型 ,但是 Object 没有实现 Comparable 的接口,因此在这里就不能对当前类进行 implements 操作。由此就引出 “泛型上界”:通过对类型的边界进行约束,
通过 extends 来实现 Comparable 使两个数据进行比较:而对于其他数据来说:只要实现了 Comparable 接口,都可以调用这个方法。
在新创建的Person类里面,因为 Person 实现了 Comparable接口 ,因此在findMax方法可以接收这个类型。
1.4、通配符
这里使用 通配符 就可以传递任何参数。
1.4.1、通配符上界 与 下界
上界: extends 上界>:不能写入数据,只能读取数据
下界: super 下界>:不能读取数据,只能写入数据
1.5、包装类
装箱:
public class TestDemo5 { public static void main2(String[] args) { //拆箱:将 Integer 类型放在 基本类型里面 Integer a = 20; //自动拆箱: int b = a; //手动拆箱: int c = a.intValue(); double d = a.doubleValue(); } public static void main1(String[] args) { //装箱:将 i 的值放在 a 中 int i = 10; //自动装箱: Integer a = i; //手动装箱: Integer b = Integer.valueOf(i); }}
上述代码中出现的问题是为什么???
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~