#kotlin #kotlin-android-extensions
#kotlin #kotlin-android-extensions
Вопрос:
У меня есть универсальный интерфейс для http-запроса retrofit2
interface BaseGetRequest<T: Any> {
@GET fun requestGet(@Url urlGetRequest: String,@FieldMap parameters: Map<String, String>): Single<T>
}
и теперь мне нужно передать BaseGetRequest в retrofit2 в качестве ссылки на класс, в Java это просто рассматривается как BaseGetRequest.java , но не разрешает в kotlin, потому что там указано несоответствие типов.
Как мне это решить?
Комментарии:
1. показать метод создания NetworkUtils.builder
2. @AndreyDanilov Я обновил свой вопрос. Это действительно сработает, если я не использовал универсальный интерфейс, но я просто хотел использовать универсальный, поэтому мне не придется снова писать запрос интерфейса для моего другого http-запроса.
3. Извините за ошибку, созданную в retrofit2
Ответ №1:
По сути, вы должны возвращать тип, который хотите получить в качестве ответа.
Если вам не нужен результат, я бы рекомендовал использовать Completable
вместо Single
.
Но если вам нужно одно предположение, вы можете написать просто:
NetworkUtils.builder().create(BaseRequest::class.java)
без какого-либо оператора diamond
Комментарии:
1. Итак, модернизация требует, чтобы вы возвращали тип? Я предполагаю, что Iv скорее использовал JsonElement и сериализовал или преобразовал из json в class или model где-нибудь в моем обратном вызове.