Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泛型模型类_Java_Android_Android Studio - Fatal编程技术网

Java 泛型模型类

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

我正在使用一些web服务,我使用许多web服务来检索信息。因为有很多web服务,所以我创建了一个模型类来映射web服务的结果

尽管web服务的响应结构相同,但内容不同。因此,我创建了一个通用模型来获取如下响应

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());