美文网首页
《Effective Java中文版》-第3、4、5章

《Effective Java中文版》-第3、4、5章

作者: 46fdc45388ac | 来源:发表于2017-11-23 00:41 被阅读42次

第三章 对于所有对象都通用的方法

第8条:覆盖equals时请遵守通用约定(这一条值得深入)

包括自反性、对称性、传递性、一致性、非空性(所有条目要求都可以演化成代码限定

第9条:覆盖equals时总要覆盖hashCode

否则会导致该类无法结合所有基于散列的集合正常运作。(hashCode的原理是做粗分类,而基于hash的集合原理上都是通过先比较hashCode分类再比较equals来优化速度的,如果不实现hashCode意味着比较hash的过程就会是false,重写的equals根本就不会有机会执行)

hash算法的优秀程度决定hash集合的效率,普通原则是尽可能均匀分布到所有散列值但具体情况要具体而言之。

第10条:始终要覆盖toString

原始toString是类名+@+散列码的无符号十六进制表示

第11条:谨慎地覆盖clone(clone有诸多问题,慎用)

Cloneable接口的含义是,如果类实现了Cloneable,那么Object的clone方法就返回该对象的逐域拷贝,否则就会抛出CloneNotSupportedException异常。

第12条:考虑实现Comparable接口

Java中所有值类,都已经实现了Comparable

Comparable是将对象与指定对象比较,如果小于、等于或大于时分别返回负数、0或正数。(所以到底是升序还是降序,是取决于排序方法而非比较方法。sort是默认升序排列)

Comparable最好保持和equals一样的一致性,否则会引起集合异常。

第4章 类和接口

第13条:使类和成员的可访问性最小化(这一章可读性很高)

核心是善用private、包级私有、protected、public

注意理解域的概念,也有有私有域、公有域、静态域、final域等概念。(这里是本质的全代码都在域中的角度理解

第14条:在公有类中适用访问方法而非公有域

核心原则是保护数据,根据业务需求开放getter或setter,另外一个好处是,存在内部实现的可修改空间。

第15条:使可变性最小化(本章高可读性)

安全角度考虑,关注于成员的可变性,对于不可变的成员,尽量不要对外暴露setter。

不可变对象本质上是线程安全的,他们不要求同步。

第16条:复合优先于继承

继承打破了封装性,所以跨包界的继承是很危险的(注意这里包界的概念和思想

第17条:要么为继承而设计,并提供文档说明,要么禁止继承

因为继承时会牵扯到代码和实现封装的问题

第18条:接口优于抽象类

接口的一个用于在于跨部门使用和设计(因为在A部门所需要的B部门实现CODE_A还没实现时就可以通过约定接口进行开发了)

接口要谨慎定义,因为后期修改很麻烦(这里的后期是指jar包发布后,发布后,代码就不受控制了)

第19条:接口只用于定义类型

这里想说的是,如果接口只用于定义接口,那么被称为常量接口,是对接口不当使用。

如果大量使用工具类到处的常量,可以使用静态导入(static import  1.5引入)

第20条:类层次优于标签类

这里的意思大概是,如果要引入类别标志参数,不妨考虑把类别标志参数代表的类型实现成不同的子类

第21条:用函数对象表示策略

策略模式的一种使用,通过使用静态内部类和静态成员变量来提供不同的策略实现。

第22条:优先考虑静态成员类

基于底层实现提供的优化策略

第5章 泛型

第23条:请不要在新代码中适用原生态类型

原生态类型只是为了支持旧代码存在

泛型的优势在于更安全和更清楚,怎么实现呢,通过编译时的类型检查

第24条:消除非受检警告

消除警告的最小颗粒是成员变量,消除时应该适用尽量小的颗粒以防止影响到其他需要警告的地方。

第25跳:列表优先于数组

列表做更严格的类型检查,数组则很多报错要等到运行时

第26条:优先考虑泛型

提供更通用实现

第27条:优先考虑泛型方法

一种写法 public static <E> Set<E> union(Set<E> s1,Set<E> s2)

第28条:利用有限制通配符来提升API的灵活性

Collection<?>  ,Collection<? super E> ,Collection<? extends E>  ,Collection<T extends Comparable<T>     

(page 102)

第29条:优先考虑类型安全的异构容器

相关文章

网友评论

      本文标题:《Effective Java中文版》-第3、4、5章

      本文链接:https://www.haomeiwen.com/subject/adlavxtx.html