[Effective Java 读书笔记] 第三章类和接口 第二十三-- ??条
第二十三条 请不要再新代码中使用原生态类型
1 使用原生态类型,就失去了泛型在安全性和表述性方面的所有优势,所以新代码中不要使用原生态类型
2 List<String>可以传递给List作为的参数,但是不能传递给List<Object>,因为泛型有子类型化的规则,List<String>是原生态类型List的一个子类型,而不是参数化类型List<Object>的子类型
3. 如果不确定类型,可以使用通配符类型 Set<?>
第二十五条 列表优于数组
1.数组是协变的,即如果SUB 为SUPER的子类型,则SUB[]也是SUPER[]的子类型,类型的转换可能就引起问题:
Object[] aa= new String[2];
aa[0] = new Integer(1);//运行时才会报错Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer
//at MainTestJava.main(MainTestJava.java:18)
而泛型是不可变的,即队友不同的T1 和T2,List<T1> 和List<T2>没有任何继承关系
List<Object> ll = new ArrayList<String>();//编译时就提示有错误,Type mismatch: cannot convert from ArrayList<String> to List<Object>
2.泛型数组是不容许创建的,因为它类型不安全:
List<String>[] stringLists = new ArrayList<String>[1];//加入这里可以成功
List<Integer> intList = Arrays.asList(42);
Object[] objects = stringLists; //数组是协变的,所以可以转为Object[]
objects[0] = intList; //泛型运行时擦除类型,所以可以将intList转为Object[0]
String s = stringLists[0].get(0); //出错
Object[] aa= new String[2];
        aa[0] = new Integer(1);
[Effective Java 读书笔记] 第三章类和接口 第二十三-- ??条的更多相关文章
- [Effective Java 读书笔记] 第三章类和接口 第二十-二十一条
		
第二十条 用函数对象表示策略 函数指针(JAVA的函数指针,是指使用对象的引用来作为参数,传递给另一个对象的方法)主要用来实现策略模式,为了在JAVA中实现这种模式,要申明一个接口来表示该策略,并为每 ...
 - [Effective Java 读书笔记] 第三章类和接口 第十三 -- 十四条
		
第十三条 使类和成员的可访问性最小化 总得来说,我们应该尽量将成员的访问范围限制到最小!有利于解耦,开发.测试和优化都能够更加独立. 对于成员(域,方法,嵌套类和嵌套接口),有四种可能的访问级别,访问 ...
 - [Effective Java 读书笔记] 第三章类和接口 第十八--十九条
		
十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...
 - [Effective Java 读书笔记] 第三章类和接口 第十六条
		
第十六条 复合优先于继承 如果不确定B和A的关系是,is-a的关系,B确实也是A,那么久不应该使用B继承A,否则会暴露实现细节, 你的实现都会限制在原始的实现上. 书中举的第一个例子,实现了一个类ex ...
 - Effective Java读书笔记——第三章 对于全部对象都通用的方法
		
第8条:覆盖equals时请遵守通用的约定 设计Object类的目的就是用来覆盖的,它全部的非final方法都是用来被覆盖的(equals.hashcode.clone.finalize)都有通用约定 ...
 - [Effective Java 读书笔记] 第三章 对所有对象都通用的方法 第八 ---- 九条
		
这一章主要讲解Object类中的方法, Object类是所有类的父类,所以它的方法也称得上是所有对象都通用的方法 第八条 覆盖equals时需要遵守的约定 Object中的equals实现,就是直接对 ...
 - [Effective Java 读书笔记] 第三章 对所有对象都通用的方法 第十---十一条
		
第十条 始终覆盖toString() toString的实现可以使类使用起来更加舒适,在执行println等方法时打印出定制信息. 一单实现了自己的toString,指定输出的固定格式,在方法的文档说 ...
 - 《Effective Java 2nd》第4章 类和接口
		
目录 第13条: 使类和成员的可访问性最小化 第14条:在公有类中使用访问方法而非公有域 第15条:使可变性最小化 第16条:复合优先于继承 第17条:要么为继承而设计,并提供文档说明,要么就禁止继承 ...
 - [Java读书笔记] Effective Java(Third Edition) 第 4 章 类和接口
		
第 15 条: 使类和成员的可访问性最小化 软件设计基本原则:信息隐藏和封装. 信息隐藏可以有效解耦,使组件可以独立地开发.测试.优化.使用和修改. 经验法则:尽可能地使每个类或者成员不被外界访问 ...
 
随机推荐
- 初识Activiti工作流
			
一.背景介绍 公司最近接了一个监狱AB门系统的项目,在对项目进行调研时,发现客户的关注点主要是在AB门流程这块,项目大部分功能都是审批流程和单据流动状态等.而之前公司的项目关于流程主要都是在表中设置状 ...
 - 重拾c++第一天(2):基本语法
			
1.输出方法: cout<<"输出语句" 2.输出时换行为 cout<<endl or "\n" 3.连续赋值是合法的,从右往左依次赋值 ...
 - Python的re模块,正则表达式用法详解,正则表达式中括号的用法
			
Python的re模块,正则表达式 #导入re模块 import re 1.match方法的使用: result = re.match(正则表达式,待匹配的字符串) 正则表达式写法: 第一部分: 字 ...
 - python3装饰器-进阶
			
一.wraps 作用:优化装饰器 from functools import wraps # 导入wraps def wrapper(f): @wraps(f) # wraps的语法糖 def inn ...
 - GoldenGate DB11gr2配置手册
			
GoldenGate DB11gr2配置手册 源端数据库配置 1.1源端数据库打开Archive Log: SQL>shutdown immediate; SQL>startup moun ...
 - 【数据结构】FHQ Treap详解
			
FHQ Treap是什么? FHQ Treap,又名无旋Treap,是一种不需要旋转的平衡树,是范浩强基于Treap发明的.FHQ Treap具有代码短,易理解,速度快的优点.(当然跟红黑树比一下就是 ...
 - [UVA1494] Qin Shi Huang's National Road System
			
题目 戳这里 题解 从今天起我要改邪归正,好好刷题准备联赛! 这是一道经典的最小生成树题目. 枚举每一条边作为道士要修的路,求出包含这条边的最小生成树. 先求出原图的最小生成树. 如果要删的边在最小生 ...
 - Frameworks.Entity.Core 5    EntityValidation
			
Project.Core\Frameworks.Entity.Core\EntityValidation\ EntityValidation 1 数值验证DigitAttribute.cs Digi ...
 - JPA基本注解的使用
			
一:JPA基本注解 使用: 使用: 使用: 查看表: 二:用table来生成主键 使用: allocationSize:每次增加多少 tablel:指定使用那张表 执行两次main方法后查看表: jp ...
 - SpringBoot配置嵌入式Servlet容器
			
1).如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCustomizer]): ...