Java class, 多类型Arraylist

Java class, Arraylist with multiple types

我是 Android 和 Java 的新手,对我的服务器应用程序通信有疑问。我的服务器总是 returns JSON 输出 "Code"、"Message" 和 "Data"。像这样:

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}]}

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

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

但这就是我的问题。我不想将 "car"、"login" 等特定类型提供给列表。根据我的要求,我想创建一个带有 List-Type "car" 的 ServerResponse-class,另一个带有 List-Type "Locations" 等

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

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

此致 迈克尔

查看 Java Generic Types.

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

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

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

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

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

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

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

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

您也可以使 Serverrespone 通用。

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