Effective Java 读书笔记
第一章:引言
1、Java语言支持四种类型:接口、类、数组、基本类型(primitive),前三种被称为引用类型。
2、类的成员由它的域(filed)、方法(method)、成员类(member class)、成员接口(member interface)组成。
第二章:创建和销毁对象
第一条:考虑用静态工厂方法代替构造器
1、为了让客户端获取它自身的一个实例,最常用的方法是提供一个公有的构造器。还有一种方法是:类提供一个公有的静态工厂方法(static factory method),用来返回类的实例。
如下方法,将boolean基本类型转换成了一个Boolean对象引用
public static Boolean valueOf (boolean b) {
return b? Boolean.TRUE : Boolean.FALSE;
}
2、静态工厂方法与构造器不同的第一大优势在于,它们有名称:
如构造器BigInteger(int,int,Random),返回的BigInteger可能为素数,Java1.4后,改为用BigInteger.probablePrime的静态工厂方法来表示,显然更为清楚。
3、静态工厂方法与构造器不同的第二大优势在于,不必在每次调用的时候都创建一个新对象:如Singleton
4、
静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对象(没搞明白,列举了枚举的例子,有待跟进)
5、
静态工厂方法与构造器不同的第三大优势在于,在创建参数化类型实例的时候,它们使代码变得更加简洁:
如 Map<String,List<String>> m = new HashMap<String,List<String>>(); 随着类型参数变得越来越长,这一冗长的声明会变得越来越痛苦。
假设HashMap提供了这个静态工厂方法:
Public static <K,V> HashMap<K,V> newInstance() {
return new HashMap<K,V>();
}
那么声明将会变得如此简洁:
Map <String,List<String>> m = HashMap.newInstance(); 这样的解决方法称为类型推导(type inference)

浙公网安备 33010602011771号