Effective Java 第三版全文翻译,纯属我的业余翻译,不合理的地方,望指正,感激涕零!java
本章涉及建立和销毁对象,包括什么时候以及如何建立它们,什么时候以及如何避免建立它们,如何确保它们被及时销毁,以及如何管理在销毁以前必须进行的清理操做。git
尽管Object是一个具体类,可是设计它主要是为了扩展。它全部的非final方法(equals、hashCode、toString、clone和finalize)都有明确的通用约定(general contracts),由于它们被设计成是要被重写(override)的。任何一个类,它在覆盖这些方法的时候,都有责任遵照这些通用约定;若是作不到这一点,其余依赖于这些约定的类(例如HashMap和HashSet)就没法结合该类一块儿正常运做。编程
本章将讲述什么时候以及如何覆盖这些非final的Object方法。本章再也不讨论finalize方法,由于第7项已经讨论过这个方法了。而Comparable.compareTo虽然不是Object方法,可是本章也对它进行讨论,由于它具备相似的特征。数组
类和接口是Java程序设计语言的何鑫,他们也是Java语言的基本抽象单元。Java语言提供了许多强大的基本元素,供程序猿来设计类和接口。本章包含的一些指南能够帮助你充分利用这些元素,以便让你编写的类和接口可用、健壮且灵活。安全
Java 1.5发行版本中增长了泛型(Generic)。在没有泛型以前,从集合中读取到的每个对象都必须进行转换。若是有人不当心插入了类型错误的对象,在运行时的转换处理就会出错。有个泛型,能够告诉编译器每一个集合中接收哪些对象类型。编译器自动地为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。这样可使程序既更加安全,也更加清楚,可是这些好处(不只仅针对集合)是须要付出代价的。本章将告诉您如何最大化利益并最大限度地减小并发症【使用泛型带来的坏处】(complications)。微信
Java支持两种特殊用途的引用类型:一种成为枚举(enum type)类型,以及一种称为注解类型(annotation type)的接口。本章讨论使用这些类型系列的最佳实践。并发
在Java 8中,添加了函数接口,lambda和方法引用,以便更容易地建立函数对象。在这些语法(language)更改的同时添加进了流API,以便为处理数据元素序列提供库支持。在本章中,咱们将讨论如何充分利用这些工具。框架
本章讨论了方法设计的几个方面:如何处理参数和返回值,如何设计方法签名以及如何为方法编写文档。本章中的大部份内容适用于构造函数和方法。 与第4章同样,本章重点介绍可用性,健壮性和灵活性。ide
本章主要讨论Java语言的具体细节,讨论了局部变量、控制结构、类库、数据类型,以及两种不是由语言自己提供的机制(reflection和native method,反射机制和本地方法)。最后讨论了优化和命名惯例。函数
在最一般状况下,异常能够提升程序的可读性,可靠性和可维护性。若是使用不当,可能会产生相反的效果。本章提供有效使用异常的指南。
线程(RHREADS)机制容许同时进行多个活动。并发编程要比单线程编程要困可贵多,由于有不少东西可能出错,也很难重现失败。你没法避免并发。它原本就存在Java平台中了,若是你要从多核处理器中得到更好的性能,并发也是一个必要条件,这些如今都是十分广泛的了。本章阐述的建议能够帮助你编写出清晰、正确、文档组织良好的并发程序。
本章关注对象序列化(object serialization) ,它是一个Java的框架,用来将对象编码为字节流(序列化(serializing)),并从其编码中重构对象(反序列化(deserializing))。一旦对象被序列化,其编码能够从一个VM发送到另外一个VM或存储在磁盘上以便之后反序列化。本章重点介绍序列化的危险以及如何将序列化最小化。