[Effective Java读书笔记] 第二章 创建和销毁对象(1~7)
2024-10-11 16:00:57
我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3537576.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。
第1条:用静态工厂代替构造函数
1. 形式
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
2. 优点:
- 可以有名称
- 不一定要创建新对象,可以返回已有的对象
- 可以返回子类类型的对象(例:java.util.Collections)
- 让参数化代码变短(例:new HashMap<String,List<String>>() 改为 HashMap.newInstance() )
3. 缺点:不能子类化,不被IDE工具识别。
4. 常用名称:valueOf/of ; getInstance(Singleton); newInstance ; getType(不同的类时用); newType
第2条:构造函数参数很多时用Builder模式
Hamster hamhog = new Hamster.Builder("hamhog").age(1).height(100).weight(50).build();
第3条:实现Singleton的最佳方法:枚举类型
public enum Hamster{
INSTANCE; public void haveLunch() { ... }
}
第4条:把所有属性和方法都是静态的类的构造函数设为private
第5条:避免不必要的new
1. 用"hamster",不要用new String("hamster") ; 有静态工厂方法就用静态工厂,不用构造函数 ; 优先用int、long等,不要随意用Integer、Long。
2. 只在初始化创建一次实例的写法:
class Hamster {
private static final Calendar lunchTime; static {
lunchTime = Calendar.getInstance();
lunchTime.set( ... )
}
}
第6条:对于自己管理内存的类,要注意及时把过期的对象引用 = null (但平常没必要这样做),防止内存泄漏
第7条:不要使用finalizer。非要用的话,要记住调用super.finalize。
最新文章
- python之excel自动报表
- oracle 身份证校验函数
- ssh myeclipse的bug
- Android pulltorefresh使用
- jar包与lib包的区别
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
- java学习笔记(二)之数据部分
- linux服务器查看公网IP信息的方法
- Java Web程序工作原理
- PHP之intval()
- python 基础篇(二)数据类型概述
- IOS使用Jenkins持续集成
- AC Analysis
- spark2的编译
- 阿里mysql同步工具otter的docker镜像
- centos7 安装软件指南
- 基于模型的特征选择详解 (Embedded &; Wrapper)
- Mac python3.6 安装即使用 psycopg2
- Servet-------JSTL标签库
- MariaDB 数据库索引详解(9)