Fasterxml - 使用泛型的TypeReference构造

时间:2016-08-04 21:59:25

标签: java generics fasterxml

我有一个看起来像这样的课程

public class Converter<T> {
    public T convert(String json) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.readValue(json, new TypeReference<T>(){});
    }
}

我像这样调用转换方法

public static void main(String[] args) throws IOException {
    Converter<MyJsonObject> converter = new Converter<>();
    MyJsonObject json = converter.convert("{\"id\" : 123}");
}

当我运行它时,我收到错误: 线程“main”中的异常java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为MyJsonObject

事实证明,即使我在转换器构造期间指定了MyJsonObject,convert()方法也会返回LinkedHashMap而不是MyJsonObject。

如果可能,我想避免这种解决方案。

public class Converter {
    public <T> T convert(String json, TypeReference ref) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.readValue(json, ref);
    }
}

任何帮助都将不胜感激。

0 个答案:

没有答案