Java中取对象实例方法
- 公有的构造方法
Boolean bool = new Boolean("ture");
public Boolean(boolean value) {
this.value = value;
}
- 静态工厂方法
Boolean bool = Boolean.valueOf("ture");
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
静态工厂方法的优势
- 静态工厂方法可以有自己的名字,见文知义;
- 静态工厂方法能够为重复的调用返回相同的对象,不必每次调用都创建一个新的实例;
// TRUE和FALSE是Boolean类的两个静态不可变属性
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
- 静态工厂方法可以返回原返回类型的任何子类型的对象;
- ...
静态工厂方法的缺点
静态工厂方法很难被程序员发现,下面给出一些通用的命名:
- from - 类型转换方法
Date date = Date.from(instant);
- of - 聚合方法
Set<Rank> faceCards = EnumSet.of(JACK, QUEUE, KING);
- ValueOf - 常见
String str1 = String.valueOf(123);
Integer int1 = Integer.valueOf("123");
Long long1 = Long.valueOf("123");
- instance或getInstance - 返回的实例通过方法的参数来描述
- create或newInstance - 每次调用返回一个新的实例
- ...
总结:静态工厂方法更加适用,切记第一反应就是提供公有的构造器,而不先考虑静态工厂!