【发布时间】:2017-08-18 15:53:49
【问题描述】:
我检查了以下常用的静态工厂方法,每个方法内部都使用 new 关键字来创建对象
-
valueOf()public static String More ...valueOf(char c) { char data[] = {c}; return new String(data, true); } public static String More ...valueOf(int i) { return Integer.toString(i); } -
toString()返回return new String(buf, true);来源:
java.lang.String.java
第二部分相关来源:getInstance()
public static Calendar More ...getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(),
Locale.getDefault(Locale.Category.FORMAT));
cal.sharedZone = true;
return cal;
}
createCalendar 方法内部使用new 关键字创建Calendar 对象。
来源:java.util.Calendar.java
有没有静态工厂方法,内部不使用new关键字创建对象?
【问题讨论】:
-
Long.valueOf有时会使用池中预先创建的对象 -
创建新对象的唯一方法是使用
new(或反射)。但是,工厂可能不会自己创建对象,而是使用缓存或预先创建的对象。 -
Static 和 new 在功能上不相关,因此它们很可能确实存在,或者您可以自己创建它们