从方法返回泛型类型对象。获取Class <sometype>而不是SomeType </sometype>

时间:2014-08-12 23:43:55

标签: java generics

我正在编写一个反序列化json响应的方法,如下所示:

public <T> T parse(T t) throws IOException {
    ObjectMapper mapper = getMapper(contentType);
    T o = (T) mapper.readValue(getMethod.getResponseBodyAsStream(), t.getClass());
    return o;
}

我的期望是将上述方法用作:

SomeType object = parse(SomeType.class);

但是,IDE告诉我parse方法返回Class<SomeType>。我是如何解决的?我查看了ObjectMapper.readValue(在Jackson库中)的实现,但我认为我不需要这种复杂性。

2 个答案:

答案 0 :(得分:1)

更改此方法签名:

public <T> T parse(T t)...

public <T> T parse(Class<T> t)...

如果您想要提供课程。

答案 1 :(得分:1)

这应该可行我猜

public <T> T parse(Class<T> classType) throws Exception {
        ObjectMapper mapper = getMapper(contentType);       
        T o = mapper.readValue(getMethod.getResponseBodyAsStream(), classType);
        return o;
}