泛型学习笔记

泛型的使用

  1. JDK 5.0新增的特性

  2. 在集合中使用泛型:

    总结:

    ① 集合接口或集合类在JDK 5.0时都修改为带泛型的结构

    ② 在实例化集合类时,可以指明具体的泛型类型

    ③ 注意点:泛型的类型必须是类类型,不能是基本数据类型。需要用到基本数据类型的位置,拿包装类替换

    ④ 如果实例化时,没有指明泛型的类型。默认类型为java.lang.Object类型

    对于 Map<String,Integer> map = new HashMap<String,Inetger>(); JDK 7新特性:类型推断

    可以省略后面尖括号中的类型,即写为:Map<String,Integer> map = new HashMap<>();

  3. 如何自定义泛型结构:泛型类、泛型接口;泛型方法

    关于自定义泛型类、泛型接口:

    如果定义了泛型类,实例化时没有指明类的泛型,则认为此泛型类型为Object类型

    要求:如果大家定义的类是带泛型的,建议在实例化时要指明类的泛型。

    由于子类在继承带泛型的父类时,指明了泛型类型。则实例化子类对象时,不需要指明泛型。

  4. 泛型方法:在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系

    换句话说,泛型方法所属的类是不是泛型类都没有关系

    泛型方法,可以声明为静态的。因为:泛型参数是在调用方法时确定的。并非在实例化时确定。

泛型在继承方面的体现

虽然类A是类B的父类,但是 G<A>G<B> 二者不具备子父类关系,二者是并列关系。

补充:类A是类B的父类,A<G>B<G> 的父类

通配符的使用

通配符:?

类A是类B的父类,G<A>G<B> 是没有关系的,二者共同的父类是:G<?>

有限制条件的通配符的使用

? extends A:

​ G< ? extends A > 可以作为 G<A>G<B> 的父类,其中B是A的子类 --> 范围相当于 [负无穷,A]

? super A:

​ G< ? super A >可以作为 G<A>G<B> 的父类,其中B是A的父类 --> 范围相当于 [A,正无穷]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值