比方說,我有一個需要很長的時間來創建對象的方法,對象的初始化工作作爲參數傳遞
public class Foo implements Serializable {
public static Foo create(...){
/* (takes a long time) */
}
}
我也有序列化和反序列化對象的一個輔助類,
public class Pickle {
public static void dump(Serializable obj, String filename) {
/* ... */
}
public static Object load(String filename) {
/* ... */
}
}
我想用一個原型類似的功能:
public Object conditionalCreate(String filename, Object default)
{
Object obj = null;
try{
obj = Pickle.load(filename);
}
catch(Exception e){
obj = default;
}
return obj;
}
是第一次嘗試到L添加由filename
指定的序列化對象,那麼如果失敗,則創建對象default
。
現在編寫conditionalCreate
函數的方式,default
將始終創建,這不是我想要的 - 只有在必要時纔會延遲創建default
對象。
在另一種語言中,conditionalCreate
功能可能看起來像:
public Object conditionalCreate(String filename, Function defaultConstructor){
Object obj = null;
try{
obj = Pickle.load(filename);
}
catch(Exception e){
obj = defaultConstructor(); /* Note the difference here */
}
return obj;
}
此外,我想辦法將參數傳遞給這個默認的構造函數,如果對象的建設是必要的(如果反序列化失敗)。
在Java 7中是這樣的可能嗎?
是的,你有什麼確切的問題? – jlordo
我覺得我很清楚我的問題是什麼問題。我正在尋找一種方法去做一些事情。問題中解釋了一些事情。我誤解你的評論嗎? – jedwards