我有以下常用的静态工厂方法检查,他们中的每一个在内部使用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'(或反射)。但是,工厂可能不会自己创建对象,而是使用缓存或预先创建的对象。 –
静态和新功能无关,所以很可能它们确实存在,或者您可以自己创建它们 –