我有許多引用許多持久化類的html表單。通過泛型參數實例化類 - 哪種方法更好
所有HTML形式是通過一個單一的類HtmlForm控件生成通過使在相應HTMLFields實例:
public class HTMLForm<T>{
HTMLForm(HTMLFields[] f, Class<T> classt){
this.stupidSunWontAllowTnewInstance = classt;
// ... whatever GWT jazz ....
}
public T getPersistenceHandlerClass(){
try{
return (T) stupidSunWontAllowTnewInstance.newInstance();
}
catch (InstantiationException e){}
catch (IllegalAccessException e){}
}
Class<T> stupidSunWontAllowTnewInstance;
}
HtmlForm控件着眼於HTMLFields []數組產生相應的HTML形式。因此,每一組HTMLFields []數組都需要不同的持久性類。持久化類是像
PostalAddr, PersonInfo, ItemDescr, Preferences, etc, etc.
現在,因爲我不能做T.newInstance(),stupidSunWontAllowTnewInstance將被分配(一個愚蠢的必要性,由於仿製藥的太陽的體系結構)由HtmlForm控件構造函數,然後getPersistenceHandlerClass是稍後用於獲取適當的持久性處理類。
由於雲計算由CPU時間收費,我的問題是,這將使用較少的CPU,假設我有大約25個持久類來趟。上面的第一個或後面的一個?
public T getPersistenceHandlerClass(){
if (stupidSunWontAllowTnewInstance == PostalAddress.class)
return new PostalAddress();
if (stupidSunWontAllowTnewInstance == PersonInfo.class)
return new PersonInfo();
if (stupidSunWontAllowTnewInstance == ....
....
....
if (stupidSunWontAllowTnewInstance == etc.class)
return new etc();
}
或地圖工廠
public static Map<PersistenceHandlerFactoryInterface> PHFactories;
public T getPersistenceHandlerClass(){
return
PHFactories.get(stupidSunWontAllowTnewInstance).createInstance();
}
或做一個更好的建議(與CPU消耗的考慮),我應該如何克服Java泛型的缺點,另一種方式從參數T實例化的(或者批評我爲什麼太太太批評太陽的一般參數缺點)。
批評java泛型是當今常見的一種運動,所以不要期望對其進行批評:) – Bozho 2009-12-11 08:19:50
對Java泛型的批評很好,但我建議你最好用更體貼和更少挑釁的方式來做。 – 2009-12-11 08:30:47
順便說一句,我正在使用vaadin。 – 2009-12-11 08:45:52