获得正确的JavaType TypeFactory

时间:2018-04-02 19:15:30

标签: java json objectmapper

我必须反序列化我的Java对象,我不能使用静态引用,即TypeReference。

喜欢,

mentioned in here

所以,我留下的是使用类型工厂生成正确的Javatype,但不知怎的,我无法正确使用语法。

前面提到的是我的类和接口。

public interface Request {}

public interface Response {}

public class MyRequest implements Request {
int id;

//Getter //Setter
}

public class MyResponse implements Response {
int id;

//Getter //Setter
}

public class UberObject<S extends Request, T extends Response> implements Serializable {
private S request;
private T response;

//Getter//Setter
}

public class UberObjectWithId<S extends Request, T extends Response> extends UberObject<S, T> {
private int id;

//Getter //Setter
}

UberObjectWithId typereferencedObject = 

objectmapperobject.readValue(serialisedUberObjectWithId,

new TypeReference<UberObjectWithId<MyRequest, MyResponse>>() {});

上述方法有效,但由于上述链接中提到的限制,我无法使用TypeReference。

我尝试使用Typefactory来检索JavaType但我无法正确获取语法。

JavaType type = mapper.getTypeFactory().constructParametrizedType(UberObjectWithId.class,
                UberObject.class, Request.class, Response.class);

但是呼叫失败

objectmapperobject.readValue(serialisedUberObjectWithId, type);

如何解决我的特定问题?

1 个答案:

答案 0 :(得分:0)

我使用正确的语法修复它以生成JavaType

BGW

反序列化时需要具体的类。