Java泛型巩固

泛型(Generic),用法类似形参列表,保障类类型安全,减少了类型转化,解决了很多ClassCast异常.
一.常见形式
E element 元素,常用在集合里
T type 类型,指定返回值类型
KV 键值对
? 任意类型
二.泛型类和泛型接口
从我的理解来看,泛型类和泛型接口的规定差不多.
子类或者实现类也是泛型类,需要保证泛型参数一致,或者子类的泛型标识包括父类的泛型标识.
子类(实现类)不是泛型类,需要指定类型,两个都不指定,那就默认object,有一个没指定,就会报错.
泛型类只存在于编译过程中,进入JVM前都会被类型擦除,进入JVM后都是object类,所以如果是泛型接口,在编译中因为实现类要实现接口中的所有抽象方法,会多一个返回值为Object的方法,使用反射可以看到,这种被称为桥接方法.
三.泛型方法
不是泛型类的方法就叫泛型方法,有泛型标识的方法才是泛型方法,静态方法必须定义成泛型方法,才能接受泛型返回值.
四.类型通配符

<?> 这就是类型通配符,可以代替具体的实参.

但通常会使用这两个.

<? extends 实参> 代表实参的子类即本身 ,就是上限是实参 <? super 实参> 代表实参及其父爷类,下限是实参本身 使用类型通配符的返回值,如果遍历需要使用object进行遍历。 在进行类型擦除时<? extends 实参>,类型会转化为实参,但<? super 实参>会转化为Object,因为 object是所有的父类啊。 **五.泛型数组** 泛型数组其实用处和泛型集合差别不大,所以一般建议使用泛型集合,但泛型数组也能声明,就是不推荐使用。泛型数组还能声明,不能直接创建。因为泛型在编译器会自动类型擦除,而数组在编译器中会持有这个数据类型,从根本上就冲突。所以可以利用Array类的newInstance方法得到泛型数组对象,中间需要强转为泛型数组对象,不然依旧报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值