笔记:Effective Java
1、静态Factory替代Constructor函数
优势:有名称;不必每次都创建一个新对象,可实现享元;可返回子类型对象;参数化构造时候,代码简洁。
2、遇到多个Constructor 参数时候考虑使用Builder 模式
3、避免创建不必要的对象,尽量重用
如 String s = "aaaa" 远好于 String s= new String("aaaa");
Long s = Long.value(1) 远好于 Long s = new Long(1);
4、清除过期对象
典型地,清除Collection 中过期的元素,防止内存泄露
5、覆盖equals注意
总要覆盖hashCode;注意方法是 equals(Object obj) 而不是 equals(MyObject obj)
6、类和成员的可访问性最小化
7、复合优于继承
8、列表List 优于数组
现在不支持泛型数组,会抛ClassCastException
9、优先考虑泛型方法
public <T> T myMethod(List<T> tList) {}
10、必要时候进行保护性拷贝
比如返回一个数组,为了避免被,可返回其 clone对象。
11、需要精确的答案,不要使用float和double,而使用BigDecimal
13、基本类型优于装箱类型
比如 int 优于 Integer, boolean 优于 Boolean
14、同步访问共享的可变数据
i++,++操作不是线程安全的,可使用AtomicLong
使用Volitale关键字保证可见性
15、Executor 和 task 优于线程
16、并发工具优于wait、notify
17、慎用初始化
单例模式初始化:
public class Singleton{
private Singleton() {}
private static Singleton instance ;
public static Singleton getInstance() { return Holder.singleton }
private static class Holder
{
static Singleton singleton = new Singleton();
}
}
其余没怎么用到