java随笔 泛型

泛型
为什么要引用泛型?(jdk1.5后提出)
在JAVA语言中,为了方便接受参数类型的统一,提供了核心类Object,利用此类对象可以接收所有类型的数据,但是因为其描述的范围过大,传入的参数,和方法体里实际处理的参数类型不同时,就会出现ClassCastExpcetion。(比如,方法体里实际处理的是2个参数的数值计算,但是我却传入的是字符型)。这些错误在编译时不会告诉开发者,而是在执行中才会产生,而造成此问题的原因就是Object类型接收的范围数据过大(接收了引用类型和基本数字类型)。
为了解决这种问题,最核心的方案就是避免向下转型(通过Object接收,然后转型到具体的实例对象),所以提出泛型,泛型的核心思想是:类中的属性和方法的参数与返回值的类型采用动态标记,在对象实例化时动态的配置要使用的数据类型。

注意,泛型只允许设置引用数据类型。
泛型在类上标记后,需要通过实例化对象进行类型配置,而所设置的类型只能够是引用类型。如果,要设置基本类型,则必须采用包装类(这就是为什么在jdk1.5之后要引用类对象的自动装箱和拆箱机制)

泛型通配符:
在方法中,参数类型的动态匹配通过 ”?” 来标记。使用 ? 通配符作为动态匹配传入的对象,只能够获取,而不能够去修改对象的属性。

泛型的上下限:
1.【类和方法】设置泛型的上限(? extends 类) : 只能够使用当前类或当前类的子类来设置泛型。
如: ? extends Number :可以设置Number或其子类作为泛型。
2.【方法】设置泛型的下限(? super 类) : 只能够设置指定的类或类的父类
? super String 只能够设置String或String的父类Object.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值