第2章.创建和销毁对象[Effective Java 第2版]
来源:互联网 发布:中国产业安全数据 编辑:程序博客网 时间:2024/06/11 17:21
1. 考虑用静态工厂方法代替构造器
优点 :
- 有名称
- 有时不必每次都创建一个新的实例
public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE ;}
- 可返回所有返回类型的子类(静态工厂方法返回类型为接口时 , 可以返回任意实现此接口的类)
- 使得创建实例的方法显得更加简洁
public static <K,V> Map<K,V> newInstance(){ return new HashMap<K,V>();}Map<String,List<String>> m = HashMap.newInstance();
缺点 :
- 类如果不含有公有的或者受保护的构造器 , 就不能被子类化 (什么意思 , 没有看懂 (ㄒoㄒ))
- 静态工厂方法和静态方法本质是一样的 . 不容易被发现并使用静态工厂方法来实例化 .
2. 考虑用构建器 ( Builder ) 来代替多参数的构造器
- 重载构造器不方便实例化
- 利用 Builder 方便添加约束条件 ( 在 build 方法的时候抛出 )
- 可以通过一个 Builder 来实例化多个目标对象
3. 使用枚举来实现单例
- 即使进行复杂的序列化和反射也无法多次实例化 ( 保证单例的唯一性 )
public enum Jared{ INSTANCE; public void method(){ ... }}
4. 使用私有构造器使类不能被实例化
public class UtilityClass{ private UtilityClass(){ }}
5. 避免创建不必要的对象
- 重用不可变对象
String s = new String("stringette");//创建了多余的String实例String s = "stringette";//使用此方法复制 , 而非上面的 .
- 避免无意识的自动装箱 ( 优先使用基本类型 )
public static void main(String[] args){ Long sum = 0L;//此处使用 Long 声明 sum , 后续处理会自动装箱 , 应该使用 long 声明 . for ( long i = i ; i < Integer.MAX_VALUE ; i ++ ) { sum += i ; } System.out.println(sum);}
6. 清除过期的对象引用
7. 避免使用 finalize 方法
- 使用显式的方法终止对象中的资源 , 如 : InputStream中的close方法
- 显式终止方法与try-finally结构结合使用 , 保证终止方法能被调用 .
阅读全文
0 0
- 《Effective Java》第2章 创建和销毁对象
- effective java 第2章 创建和销毁对象笔记
- 第2章.创建和销毁对象[Effective Java 第2版]
- 《Effective java 第2版》读书笔记--创建/销毁对象
- Effective Java读书笔记(第2章-创建和销毁对象续)
- Effective Java 第2章 创建和销毁对象 精简总结 (1)
- 第2章 创建和销毁对象
- 第2章 创建和销毁对象
- 第2章-创建和销毁对象
- EffectiveJava 读书笔记 第2章 创建和销毁对象
- Effective Java 读书笔记( 2 创建和销毁对象)
- {Effective Java} Chap 2 创建和销毁对象
- Effective Java 读书笔记之2 创建和销毁对象
- effective java观后感(2)-------创建和销毁对象
- effective Java chapter 2创建和销毁对象
- Effiective Java读书笔记——第2章 创建和销毁对象
- Effective Java读书笔记(1-2章-创建和销毁对象)
- Effective Java 2nd 阅读 第二章 创建和销毁对象
- SSM框架原理,作用及使用方法
- previousSibling、previousElementSibling的区别
- idea的debug启动异常
- 虚拟机操作
- CSS 样式初始化
- 第2章.创建和销毁对象[Effective Java 第2版]
- 关于xpath
- 今日头条iOS客户端启动速度优化
- NYOJ-69-数的长度(数论)
- java的垃圾回收机制
- Ubuntu下网卡设置
- 【Python】数学函数、字符串和对象07
- Android Studio 3.0新建工程问题
- 求二叉树从叶子到根节点的值组成数字的和