将类型标记作为参数传递给通用方法

时间:2016-04-03 12:42:25

标签: java generics cdi typetoken

我在(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是用于获取所需值的类型标记。这甚至可能吗?谢谢!

0 个答案:

没有答案