我有以下常用的靜態工廠方法檢查,他們中的每一個在內部使用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'(或反射)。但是,工廠可能不會自己創建對象,而是使用緩存或預先創建的對象。 –
靜態和新功能無關,所以很可能它們確實存在,或者您可以自己創建它們 –