我有许多引用许多持久性类的 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(),因此 HTMLForm 构造函数将分配愚蠢的SunWontAllowTnewInstance(由于 sun 的泛型体系结构,这是一种愚蠢的必要性),然后稍后使用getPersistenceHandlerClass来获取适当的持久性处理类。
由于云计算按 cpu 小时收费,我的问题是,假设我有大约 25 个持久性类需要处理,那么它会使用更少的 cpu。上面的第一个还是后面的?
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();
}
或者就我应该如何克服 java 泛型缺点提出更好的建议(考虑 cpu 消耗),以另一种从参数 T 实例化的方法。(或者批评我为什么我过于兴奋地批评 sun 的泛型参数缺点)。