Effective Java
Table of Contents

创建销毁对象

使用静态工厂方法替代构造器

  1. 静态工厂方法有名字,可读性更强
  2. 静态工厂方法被调用时不需要每次都生成新对象
  3. 静态工厂方法可以返回子类型

构造器有多个参数时考虑使用builder

让单例类构造器私有

工具类使用私有构造器

Object 公有方法

重载equals()的时候同时重载hashcode()

任何时候重载toString()

类和接口

最小化类和成员的访问范围(好的模块化设计对外隐藏内部细节)

最小化可变性

优先选择组合而不是继承(继承破坏了封装)

优先选择接口而不是抽象类

接口只用于定义类型

优先选择类继承而不是标签类

泛型

方法

小心设计方法签名

  1. 选择合适的名字
  2. 不要提供太多不常用的方法
  3. 避免长的参数列表(不超过4个)
  4. 参数列表优先选择接口
  5. 优先选择枚举而不是boolean

返回空集合而不是null

编程细节

最小化局部变量的作用域(在用的时候才声明)