Есть у меня вот такой обобщённый метод для отправки запроса и получения сразу десериализованного объекта.
public static <T> T get(String url, Class<T> type){
try {
return Unirest
.get(ShikiConst.ROOT_API + url)
.header("User-Agent", Client.getUserAgent())
.asObject(type)
.getBody();
}
catch (Exception ex){
System.out.println("QueryShell.get(): " + ex.getMessage());
return null;
}
}
Вызываю его так: QueryShell.get("url", MyClass.class);
QueryShell
- это класс, в котором метод находится.
Всё прекрасно работает, пока мне не надо получить массив. Потому что когда я пытаюсь вызвать QueryShell.get("url", List<MyClass>.class);
, то оно не работает.
Я погуглил и выяснил, что можно сделать так:
Class<List<MyClass>> type = (Class) List.class;
List<MyClass> obj = QueryShell.get("url", type);
Но оказалось, что для Java есть разница что у меня прячется под T
. Ибо он мне выдаёт Found: 'Class<List<MyClass>>', required: 'Class<T>'
(код ошибки упрощён, убрал полные имена с пакетами).
Мне теперь методы отдельно для массивов плодить? =(
UPD: Попробовал вот так:
Class<ArrayList<MyClass>> type = (Class) ArrayList.class;
ArrayList<MyClass> obj = QueryShell.get("url", type);
Ошибка теперь говорит почти тоже самое, только про ArrayList
:
Found: 'Class<ArrayList<MyClass>>', required: 'Class<T>'
Попробовал также QueryShell.get("url", MyClass[].class);
. Ошибка аналогичная:
Found: 'Class<MyClass[]>', required: 'Class<T>'
UPD2: Ошибка оказалась совершенно в другом, но IDEA почему-то показывала именно на это. После исправления заработали все вышеуказанные способы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток , Нужна помощь как захватить звук с мишкера системы?
Есть фрагмент, в котором находится ListViewПри клике на элемент списка идет вызов другого активити
Мне нужно вывести не полный список товаров на страницеТо есть их, например, в сумме 40, и я хочу, чтобы первоначально показывалось 10, и нажимая...