疯狂JAVA讲义泛型(第九章)学习笔记

本文是疯狂JAVA讲义第九章的学习笔记,主要涵盖了泛型的两大核心内容:简单知识汇总与易混淆的难点。在简单知识部分,讲解了静态上下文中不支持泛型、通配符上限与下限的用法及其目的,以及泛型数组的限制。在难点部分,强调了泛型构造器与菱形语法的应用注意事项。
摘要由CSDN通过智能技术生成

一:简单零碎的知识汇总


1)静态方法,静态初始化块或者静态变量的声明和初始化中不允许使用泛型。


2)


3)


4)指定了通配符上限的集合,只能从集合中取元素(取出的元素总是上限的类型),不能向集合中添加元素(因为编译器没法确认集合元素实际是哪种子类型)。详见书P354页


5) 对于更广泛的泛型类来说,指定通配符上限就是为了支持类型型变,比如Foo是Bar的子类,这样A<Foo>就相当于

A<? extends Bar>的子类,可以将A<Foo>赋值给A<? extends Bar>类型的变量,这种型变方式称为协变。 

没有指定通配符上限的泛型类,相当于通配符上限是Object。


6) 指定通配符的下限就是为了支持类型型变。比如Foo是Bar的子类,当程序需要一个A<? super Foo>变量时,程序可以将A<Bar>,A<Object>赋值给A<? super Foo>类型的变量,这种型变方式被称为逆变。


7)Java中不允许创建一个泛型数组。

二:易混淆出错的难点汇总

1)如果程序显式指定了泛型构造器中声明的泛型形参的实际类型,则不可以使用菱形语法(即用一对尖括号表示泛型),如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值