Я использую платформу RestAssured для вызовов API и хочу создать метод, который будет возвращать значение из ответа JSON в определенном типе переменной.
Я хочу использовать общий тип возвращаемого значения, но мне не нравится моя реализация.
RestAssured getList() возвращает список значений в соответствии с путем JSON и приводится к типу значения. Когда я реализую метод getList(), я должен привести результат к T, чтобы соответствовать типу возвращаемого значения:
public <T> T getValuesFromResponse(Response response, ValueTypeEnum value) {
T t = null;
switch (value) {
case ID:
//Will return List<Integer>
t = (T) response.thenReturn().jsonPath().getList("data.id", Integer.class);
break;
case NAME:
//Will return List<String>
t = (T) response.thenReturn().jsonPath().getList("data.name", String.class);
break;
}
return t;
}
Когда я хочу вызвать этот метод, мне нужно снова привести значения к нужному мне типу, т.е.:
((List<Integer>) getValuesFromResponse(response, ValueTypeEnum.ID)).get(0)
Как избежать двойного приведения?
Правильно ли моя реализация использует общий тип возврата List<T>
?
public <T> List<T> getValuesFromResponse(Response response, DeviceValues value) { return response.thenReturn().jsonPath().getList("data.id", Integer.class); }
ошибка: Несовместимое ограничение равенства: T и Integer - person Leon Proskurov   schedule 18.05.2020