我必须反序列化我的Java对象,我不能使用静态引用,即TypeReference。
喜欢,
所以,我留下的是使用类型工厂生成正确的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);
如何解决我的特定问题?
答案 0 :(得分:0)
我使用正确的语法修复它以生成JavaType
BGW
反序列化时需要具体的类。