泛型

泛型:将类型参数化 E的类型就是将来存储对象的实际类型
泛型类:就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来…

泛型的分类:
泛型类 泛型方法

语法:
< >泛型的标志 编译阶段不确定
E类型变量,在定义时是形参,代表的是最终传入的类型;泛型类可以一次有多个类型变量,用逗号分割

整个称为ArrayList泛型类型

整个ArrayList称为参数化的类型ParameterizedType

MyArrayList l1=new MyArrayList< >告诉编译器将来存储元素的实际类型,l1中只能存储person类型的元素;泛型在编译阶段发现类型不匹配报错person只能想象成E的类型,但实际E的类型还是Object

l1.getClass( ) 获得类名

作用时期:
编译期间的一种机制,运行期间没有泛型的概念

作用;
1.增加编译期间的类型检查
2.取消类型转换的使用
3.提高程序代码的简洁性和可读性

原理:
泛型利用的是Object是所有的类祖先类,并且父类的引用可以指向子类对象
泛型是一种编译期间的机制,MyArrayList和MyArrayList运行期间是一个类型

泛型:伪泛型
类型擦除:编译器在编译阶段,把代码转换成jdk1.5之前object,代码兼容
泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。
在泛型类被类型擦除的时候,之前泛型类中的类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型,如果指定了上限如 则类型参数就被替换成类型上限。
泛型类:在以前的版本中(object)+编译时的类型检测
正常情况下,因为泛型的限制,编译器不让最后一行代码编译通过,因为类似不匹配,但是,基于对类型擦除的了解,利用反射,我们可以绕过这个限制。

包装类:
基本的数据类型,所定义的变量不是对象,包装类可以将int这样的值包装到一个对象中去。
byte 1 Byte
short 2 Short
long 8 Long
float 4 8种基本包装类型 Float
double 8 Double
char 2 Character
boolean 不确定 Boolean
int 4 Integer
int i=10;//
Integer i1=i;// 自动装箱 编译器在编译阶段会使用i构造一个包装类型的对象 自动调valueOf( )
Integer i2=Integer.valueOf( i);//装箱 将基本类型定义的变量转化为包装类的对象
int i3=i2.intValue( );//拆箱 将包装类中的数据拿出
int i4=i1;// 自动拆箱 将包装类型的直对象接转化为对应的基础变量 自动调用intValue( )
自动装箱和自动拆箱是工作编译期间的一种机制

Integer内部维护了一段空间数组 low=-128 high=127
-128 -127 0 127
i如果在范围内找到对应的对象直接返回
不在这个范围内 return new Integer(i)
目的 1.节省空间 2.速度快

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值