你是人间的四月天
读书时有输入亦应该有输出,此篇记录阅读effective java的重点及心得体会.
第二章 创建和销毁对象
- 一 . 考虑用静态工厂方法代替构造器
类可以提供一个公有的静态工厂方法,它只是返回类的实例的静态方法.
如下所示:来自Boolean(基本类型boolean的包装类)的简单示例.这个方法将boolean基本类型值转换成了一个Boolean对象引用:
public static Boolean valueOf(boolean b){
return b ? Boolean.TRUE : Boolean.FALSE;
}
- 优势
- 1. 静态工厂方法与构造器不同的第一大优势在与: 它们有名称.
- 2. 第二大优势: 不必在每次调用它们的时候都创建一个新对象.
- 3. 第三大优势: 它们可以返回原返回类型的任何子类型的对象.
- 4. 第四大优势: 在创建参数化类型实例时,它们使代码变得更加简洁.
二. 遇到多个构造器参数时要考虑用构建器
在遇到许多构造器参数的时候,有第二种代替方法,即JavaBeans模式. 在这种模式下,调用一个无参构造器来创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数.
- 缺点: 在构造过程中JavaBean可能处于不一致的状态.类无法仅仅通过检验构造器参数的有效性来保证一致性.
- 缺点: 在构造过程中JavaBean可能处于不一致的状态.类无法仅仅通过检验构造器参数的有效性来保证一致性.
三. 用私有构造器或者枚举类型强化Singleton属性
四. 通过私有构造器强化不可实例化的能力.
五. 避免创建不必要的对象
一个极端的反面例子
String s = new String("stringette");
该语句每次执行都会创建一个String实例,但是都是不必要的.改进版本:
String s = "stringette"
;
六. 消除过期的对象引用
七. 避免使用终结方法.
终结方法的优先级要明显低于其他线程.
不应该依赖终结方法来更新重要的持久状态.
显式的终止方法通常与 try-finally 结构结合起来使用,以确保及时终止.