Почему это не работает
Вопреки общему пониманию полиморфизма (что вы здесь и пытаетесь достичь), оно не применимо к генерикам.
List<String> strList = new ArrayList();
List<Object> objectList = strList;
Приведенный выше пример выдаст ошибку компиляции.
Это потому, что если мы разрешим вторую строку успешно, то может возникнуть ситуация, когда впоследствии objectList
будет назначен список другого типа (например, List<Integer>
). strList
теперь будет «поврежден», потому что objectList
содержит ту же ссылку, что и strList
.
Таким образом, нам нужно возвращать тот же тип, который явно указан в этом списке, а не подкласс или суперкласс AsyncResponse
.
Потенциальные решения
В зависимости от того, чего вы здесь пытаетесь достичь, потенциальное решение будет:
Call<APIResponse> request = repository.resolveCounts(payload);
или (а я еще не пробовал):
Call<? extends ASyncResponse> request = repository.resolveCounts(payload);