effective java 读书笔记---第五章 泛型
来源:互联网 发布:mac 装了office2016卡 编辑:程序博客网 时间:2024/06/10 17:11
23.请不要在新代码中使用原生态类型
24.消除非受检警告
非受检警告范围应该尽可能的小,不要在方法级上增加SuppressWarnings 注解,需要将这个注解添加到对应的局部变量上去,添加这个注解时需要写明注释,解释为何是安全的
25.列表优先于数组
数组是协变的,如果Sub 是Super 的子类型,那么 Sub[]就是 Super 的子类型,因此如下代码在编译期是合法的
Object[] objectArray = new Long[1];objectArray[0] = "123,456";
但在运行期会抛出ArrayStoreException,而列表则不存在这个问题,List< Object>不会是 List< Long>的超类,类似于上面的代码使用 List 时是非法的
数组域列表的第二大区别,数组是具体化的,数组在运行期才会检查它们元素类型约束,而泛型只在编译时强化它们的类型信息,并在运行期丢弃或者擦除它们的元素类型信息(instance of 不能区分不同元素对象信息的两个 LIst).擦除就是使泛型可以与没有使用泛型的代码随意进行复用
数组和泛型不能很好的进行混用,创建泛型,参数化类型或者类型参数的数组是非法的,例如:new List< E>[],new List< String>[] ,和 new E[],这些在编译时都会导致泛型数组创建错误,只能创建 new List[],因为泛型数组不是类型安全的,泛型必须保证类型安全.
因此当可变参方法与泛型集合使用时会出现警告,因为可变参方法被调用时,会创建一个数组来存放参数.
因此应该优先使用 List< E>而不是数组类型 E[],这样可能会损失性能或者简洁性,但是却有更高的安全性与复用性
26.优先考虑泛型
不能直接创建泛型数组,但是可以使用 Object 数组强行转化成泛型数组(E[])new Object[1]
此时必须确保类型安全,也可以直接使用 Object 数组,但是将 Object 数组中的值强行转换成 E(泛型)
E extends XX 限制泛型必须是 XX 的子类型
27.优先考虑泛型方法
泛型方法就像泛型一样,使用起来比要求客户端转换输入参数并返回值得方法来得更加安全,也更加容易.就像类型一样,应该确保新方法不需要转换就能使用,这通常意味着要将它们泛型化.
28.利用有限制的通配符来提升 api 的灵活性
使用 < ? extends E> < ? super E>来提升泛型方法的实用性(可以对子类有效,可以返回父类)
29.优先考虑类型安全的异构容器
- effective java 读书笔记---第五章 泛型
- Effective Java读书笔记——第五章 泛型
- [Effective Java]第五章 泛型
- 《Effective Objective-C 2.0》读书笔记---第五章
- effective java 第二章读书笔记
- 【Effective Objective-C 2.0读书笔记】第五章:内存管理
- effective STL 读书笔记——第五章:算法
- Effective Java读书笔记(第5章-泛型)
- 《Effective java》读书笔记4——泛型
- 【读书笔记】《Effective Java》(4)--泛型
- 【effective java读书笔记】泛型(一)
- 【effective java读书笔记】泛型(二)
- Effective Java 读书笔记(四):泛型
- effective java 读书笔记---第7章 方法
- effective java 读书笔记---第9章 异常
- effective java 读书笔记---第10章 并发
- 《Effective Java》读书笔记之一
- 《Effective Java》读书笔记
- 线性筛与欧拉函数、莫比乌斯函数
- x86运算指令
- LinkedHashMap
- 高并发解决方案
- 代码赏析:子窗口对于键盘和鼠标的响应
- effective java 读书笔记---第五章 泛型
- java 运算符
- vmstat命令
- Html 第一份作业
- mysql JS 计算两GPS坐标的距离函数:
- jsp页面:改变css样式
- iostat命令
- Java之字符输入流Reader
- Solr之——CentOS安装与配置Solr6.5