Java-класс, Arraylist с несколькими типами
Я новичок в Android и Java, и у меня есть вопрос, касающийся связи между сервером и приложениями. Мой сервер всегда возвращает вывод 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}]}
Я хочу использовать такой класс для работы с данными:
public class ServerResponse {
private int code;
private String msg;
private List<> data;
}
Но вот моя проблема. Я не хочу указывать в списке определенный тип, например "машина", "логин" и т. Д. В зависимости от моего запроса я хочу создать класс ServerResponse с типом списка "car", другой с типом списка "Locations" и т. Д.
Есть ли способ использовать класс ServerResponse с несколькими типами ArrayLists или мне нужно копировать этот класс несколько раз для каждого типа списка, который я хотел бы использовать?
Извините, если где-то здесь уже есть решение, но я не знаю, что мне нужно искать. И то, что я искал, я не мог найти правильное решение.
С наилучшими пожеланиями Майкл
2 ответа
Посмотрите на общие типы Java.
public class ServerResponse<T> {
private int code;
private String msg;
private List<T> data;
}
T может быть любого типа, который вы хотите, поэтому ваш список будет такого типа. Тогда ваши методы получения / установки могут возвращать или принимать тип 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>
объект.
Вы могли бы сделать Serverrespone универсальным, а также.
public class GenericResponse <T>{
private int code;
private String msg;
private List<T> data;
}