我在(CDI)服务类上有一个类似于此的方法;
@Named
public class PreferenceService {
public <T extends AbstractType> T getPreferenceValue(String prefCode, T t){
List<PreferenceValue> prefs = /* code that gets list from db*/
return prefs.get(0).getTypedValue(t);
}
}
getTypedValue()已定义为
public <T extends AbstractType> T getTypedValue(T t) {
t.instantiateFromString(getValue());
return t;
}
修改:价值观,价值&#39;由&#39; getValue()&#39;返回在上面的代码基本上是字符串。给定一个类型&#39; instantiateFromString()&#39;执行某种类型的转换/解析以返回正确的类型值。
EDIT2: 同时,StringType是一个自定义类型,它继承自AbstractType,具有实例化实现和值转换/强制
现在,我希望以下列方式调用preferenceService bean的调用者
preferenceService.getPreferenceValue("pref.code", StringType.class);
其中StringType是用于获取所需值的类型标记。这甚至可能吗?谢谢!