数据结构(Java实现)-包装类和泛型


包装类
在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了
一个包装类型。


基本数据类型和对应的包装类
在这里插入图片描述


装箱和拆箱
装箱操作,新建一个 Integer 类型对象,将 i 的值放入对象的某个属性中
在这里插入图片描述
拆箱操作,将 Integer 对象中的值取出,放到一个基本数据类型中
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


什么是泛型
泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。
所有类的父类,默认为Object类。
泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。


语法
class 泛型类名称<类型形参列表> {
// 这里可以使用类型参数
}
class ClassName<T1, T2, …, Tn> {
}

一个泛型的简单示例
在这里插入图片描述
在这里插入图片描述
想要传递String类,需要如下操作
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


注意事项
类名后的 代表占位符,表示当前类是一个泛型类
不能new泛型类型的数组,因为不知道T是什么类型
在这里插入图片描述


泛型如何编译的
擦除机制
在编译的过程当中,将所有的T替换为Object这种机制,我们称为:擦除机制。
Java的泛型机制是在编译级别实现的。编译器生成的字节码在运行期间并不包含泛型的类型信息。


为什么不能实例化泛型类型数组
在这里插入图片描述
上述,返回的Object数组里面,可能存放的是任何的数据类型,可能是String,可能是Person,运行的时候,直接转给Integer类型的数组,编译器认为是不安全的。

泛型一种比较规范的写法
在这里插入图片描述


泛型的上界
在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束
在这里插入图片描述
可以做如下修改
在这里插入图片描述
在这里插入图片描述
上述就是泛型方法的实现


public class MyArray {

}
只接受 Number 的子类型作为 E 的类型实参
在这里插入图片描述


泛型静态方法的实现
在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值