《Java核心技术(卷一)》读书笔记——泛型编程

Generic Programming

1.      什么是泛型?

一个泛型类就是具有一个或者多个类型参数(type parameter)的类。

我们可以把它看做是普通类的工厂,通过指定type parameter来实例化泛型类

2.      泛型的创新点?

在此之前,泛型实现靠继承。

随之而来的两个问题:

1.      对具体对象操作时必须进行强制类型转换,操作繁琐易出错!

2.      可以向数组列表中插入任何类的对象,即使并不兼容。在此基础上,使用强制类型转换出现异常!

3.      泛型方法

泛型类中的方法自然都是泛型方法,然,普通类中也可以有泛型方法

常见问题:编译器类型匹配出错

4.      类型变量的限定

示例:

语法:

1.      形式:<T extends BoundType>;

表示:T是BoundType的子类型

要求:T和BoundType是类/接口

2.      T extends Comparable &Serializable可以有多个接口超类型,但至多有一个基类

3.      如果用一个基类用作限定,必须是限定列表中的第一个

5.      泛型代码在虚拟机中的平凡实现

虚拟机没有泛型类型对象——所有对象都是普通类

n  基本概念:

1.      类型擦除:擦除类型变量T,并用第一个限定的类型变量来替换(若T无限定,就用Object替换)

2.      原始类型:一个泛型类经过类型擦除得到的类

n  翻译泛型表达式

 

n  翻译泛型方法

 

n  调用遗留代码

6.      Java泛型的约束和局限性

1.      不能用基本类型实例化类型参数

2.      运行时类型查询只适用于原始类型

3.      不能创建参数化类型的数组

4.      Varargs警告

5.      不能实例化类型变量

6.      泛型类的静态上下文中类型变量无效

7.      不能抛出或者捕获泛型类的实例

8.      注意擦除后的冲突

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值