7

我是 Android 和 Java 的新手,对我的服务器应用程序通信有疑问。我的服务器总是返回带有“代码”、“消息”和“数据”的 JSON 输出。像这样:

e.g: {"code":200,"msg":"success","data":[{"track_id":123},{"track_id":124},{"track_id":125}]}
e.g: {"code":200,"msg":"success","data":[{"type":"car","length":100},{"type":"train","length":500},{"type":"foot","length":3}]}

我想使用这样的类来处理数据:

public class ServerResponse {
    private int code;
    private String msg;
    private List<> data;
}

但这是我的问题。我不想将“汽车”、“登录”等特定类型提供给列表。根据我的要求,我想创建一个带有列表类型“汽车”的 ServerResponse 类,另一个带有列表类型“位置”等。

有没有办法将类 ServerResponse 与多种类型的 ArrayLists 一起使用,或者我是否必须为我想使用的每个列表类型多次复制这个类?

如果这里的某个地方已经有解决方案,我很抱歉,但我不知道我必须搜索什么。对于我搜索的内容,我找不到合适的解决方案。

最好的问候迈克尔

4

2 回答 2

5

查看 Java Generic Types

public class ServerResponse<T> { 
    private int code;
    private String msg;
    private List<T> data;
} 

T 可以是您想要的任何类型,因此您的列表将属于该类型。然后你的 getter/setter 方法可以返回或接受类型 T。

现在让我们假设您的响应是针对 Car 对象。你会这样做

private ServerResponse<Car> mCarResponse = new ServerResponse<>();

现在您可以像这样在 ServerResponse 类中放置一个方法。

public class ServerResponse<T> { 
    private int code;
    private String msg;
    private List<T> data;

    public List<T> getResponseObjectList(){
        return data;
    }
} 

您现在将获得一个List<Car>对象。

于 2015-08-17T14:07:10.943 回答
0

您也可以将 Serverrespon 设为通用。

public class GenericResponse <T>{
   private int code;
   private String msg;
   private List<T> data;
}
于 2015-08-17T14:07:58.007 回答