public static Boolean valueOf(boolean b){
return b ? Boolean.TRUE : Boolean.FALSE;
}

 静态工厂方法与构造器不同的几大优点

  1. 它有名称。(构造器可以有多个,对于其他人来说选择哪个构造器是一种很麻烦的事情,如果用静态工厂则是一目了然,静态工厂可以定义方法名来区分多个构造器之间的差别)
  2. 不必每次调用都创建一个新对象。
  3. 可以返回原返回类型的任何子类型。(这个EnumSet类是最好的例子)
  4. 实例化带参数的代码更简单
Map<String, List<String>> m = new HashMap<String, List<String>>();


A.newInstance();
public static <K, V> HashMap<K,V> newInstance(){
return new HashMap<K, V>();
}

静态工厂的缺点

  1. 类如果不含共有会protected 的构造器,就不能子类化
  2. 它和其他的静态类没区别(难以找到自己要的方法),所以要靠命名上去弥补了。(一般命名 ValueOf,of,getInstance,newInstance,getType,newType)