android - 类型不匹配。必需 : Nothing Found: Callback<*>

标签 android kotlin retrofit2

在我的 Android 项目中:

import retrofit2.Call
import retrofit2.Callback

    fun getAdvertising(callback: Callback<List<Advertising>>) {
        val call = tangoRestClient.advertising
        executeAsync(call, callback)
    }

    private fun executeAsync(call: Call<*>, callback: Callback<*>) {
        call.enqueue(callback)  // compile error
    }

但是我得到编译错误:

> Task :app:generateDebugSources
> Task :app:validateSigningDebug

> Task :transport:compileDebugKotlin FAILED
e: \TransportService.kt: (127, 14): Out-projected type 'Call<*>' prohibits the use of 'public abstract fun enqueue(p0: Callback<T!>!): Unit defined in retrofit2.Call'

FAILURE: Build failed with an exception.

最佳答案

是的,CallCallback 的类型参数应该相同。您必须编写 executeAsync 函数,例如如下所示:

private fun <T> executeAsync(call: Call<T>, callback: Callback<T>) {
    call.enqueue(callback)  // no compile error
}

它将保证类型参数相同

关于android - 类型不匹配。必需 : Nothing Found: Callback<*>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240983/

相关文章:

android - 为什么 onPreDraw() 被调用两次?

android-studio - 片段数据绑定(bind),DataBinderMapperImpl.java 找不到符号 FragmentCollectionBindingImpl

java - 使用查询参数改造 URL

java - 从 JSON 格式的服务器响应获取 token

android - 我可以确定 Activity 是否正在运行 AsyncTasks 吗?

android - 在Studio上创建项目时如何禁用“刷新SDK”?

Android双向数据绑定(bind)Float到EditText

android - 如何将我的自定义 ImageView 与 DataBinding 一起使用?

android - 如何使用 RxJava 2 + Retrofit 2 进行 POST?

javascript - 如何创建从 google places API 获取信息的服务