在Boolean
类中,有这样一个方法:java
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
复制代码
这就是JDK用静态工厂方法代替构造器的一个使用。那么这样作有什么好处呢?框架
Map<String, List<String>> m = new HashMap<String, List<String>>();
,虽然在JDK7以后能够简化为Map<String, List<String>> m = new HashMap<>();
,但假设一下,若是HashMap提供了一个这样的静态工厂:public static <K, V> HashMap<K, V> newInstance() {
return HashMap<K, V>();
}
复制代码
那么在建立时就能够写为:Map<String, List<String>> m = HashMap.newInstance();
ide
静态工厂方法并非没有任何缺点的:spa
valueOf
、 getInstance
、 newInstance
、 getType
等。总结:code
静态工厂方法和构造器各有优劣。一般静态工厂更合适,切忌第一反应就是提供公有的构造器,而不是优先考虑静态工厂。对象
《Effective Java中文版 第2版》get