Java 泛型模型类
我正在使用一些web服务,我使用许多web服务来检索信息。因为有很多web服务,所以我创建了一个模型类来映射web服务的结果 尽管web服务的响应结构相同,但内容不同。因此,我创建了一个通用模型来获取如下响应Java 泛型模型类,java,android,android-studio,Java,Android,Android Studio,我正在使用一些web服务,我使用许多web服务来检索信息。因为有很多web服务,所以我创建了一个模型类来映射web服务的结果 尽管web服务的响应结构相同,但内容不同。因此,我创建了一个通用模型来获取如下响应 public class GenericResponse<T> { private List<T> Results; private ErrorResponseModel Status; public List<T> getRe
public class GenericResponse<T> {
private List<T> Results;
private ErrorResponseModel Status;
public List<T> getResults() {
return Results;
}
public ErrorResponseModel getStatus() {
return Status;
}
}
这样做的正确方式是什么
注意:有一种方法可以做到这一点,我已经尝试过了,您可以将此响应转换为Gson,然后使用
相关对象类。这样做是可行的,但不知道是否可行
良好做法
你们班的问题是,你们总是希望结果是一个列表。 您可以做的是将结果更改为
private T result
,在这种情况下,如果您的结果是字符串,那么T将是字符串,如果结果是foo列表,那么T将是List
编辑
如果您对结果的序列化有问题,则需要为该类型定义JsonDeserializer
是的,我一直在期待一份清单。这是固定的。只有列表内容会有所不同。
List<SomeModelClass> result= webServiceResponse.getResults();
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to...
class MyResultDeserializer implements JsonDeserializer<MyResult>() {
public Id deserialize(JsonElement json, Type type, JsonDeserializationContext context)
throws JsonParseException {
return new MyResult(id.getValue());
}
}
GsonBuilder builder = new GsonBuilder()
builder.registerTypeAdapter(MyResult.class, new MyResultDeserializer());