получение исключения модификации Тип возвращаемого метода не должен включать переменную типа или подстановочный знак в kotlin

 networkCall = NetworkCall(context)
            val responceCall = networkCall!!.getRetrofit(true).callReadMeService()
            responceCall.clone().enqueue(object : Callback<BaseResponse<*>?> {
                override fun onResponse(call: Call<BaseResponse<*>?>, response: Response<BaseResponse<*>?>) {
                    networkCall!!.dismissLoading()


                    web_view!!.loadData((response.body()?.data as LinkedTreeMap<*, *>)["description"] as String, "text/html", "UTF-8")
                }

                override fun onFailure(call: Call<BaseResponse<*>?>, t: Throwable) {
                    networkCall!!.dismissLoading()

                }
            })

вот метод апи

@POST("stories/readme")
fun callReadMeService():   Call<BaseResponse<*>?>

теперь я получаю это исключение

вот мой класс BaseResponse

class BaseResponse<T> {

    var message: String? = null
    var status: Boolean = false
    var errors: Array<String>? = null
    var code: String? = null
    var data: T? = null
}

Тип возвращаемого значения метода не должен включать переменную типа или подстановочный знак: retrofit2.Call> для метода IApi.callReadMeService.

теперь я не могу удалить общую переменную данных из класса BaseResponse, потому что я использую этот класс в качестве общего синтаксического анализатора API

любое решение для этого


person pkgrover    schedule 31.08.2017    source источник
comment
Вы решили эту проблему? У меня такой же вопрос.   -  person Cyrus    schedule 19.08.2018


Ответы (1)


Вы не можете этого сделать, потому что информация о типе должна быть указана полностью, иначе модификация не сможет правильно сгенерировать Сервис. см. это обсуждение.

Вам нужно создать отдельный метод API для каждого типа.

person kenny_k    schedule 31.08.2017
comment
любая аннотация, которая может исправить это? - person pkgrover; 01.09.2017
comment
что делать, если я хочу вернуть карту? Kotlin заставляет меня объявлять параметры типа! - person Hossein Nasr; 03.10.2018
comment
@HosseinNasr Лучше всего вернуть JsonElement и самостоятельно разобрать его на Map. Это ограничение не имеет ничего общего с Kotlin, а с самим Retrofit. - person kenny_k; 03.10.2018