"Nothing" 需要调用函数 - Kotlin

"Nothing" required in call function - Kotlin

我写了一个从外部数据库中提取内容并将它们插入到列表中的方法。我写了这个方法,但它在 call[j]!!.enqueue(object : Callback {:

上给了我一个错误
    private val call = arrayOfNulls<Call<*>?>(NUM_ROWS)

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.main_fragment, container, false)
        recyclerView[0] = view?.findViewById(R.id.rc_view)
        recyclerView[1] = view?.findViewById(R.id.rc_view2)
        recyclerView[2] = view?.findViewById(R.id.rc_view3)
        loadMovie() 
        return view
    }

    private fun loadMovie() {
        val apiService = getClient(context)!!.create(ApiService::class.java)
        for (j in 0 until NUM_ROWS) {
            call[j] = apiService.getDiscover(BuildConfig.API_KEY, Values.LANGUAGE, Values.SORT_BY[0], Values.ADULT, GENRE.get(0), Values.PAGE[0])
        }
        for (j in 0 until NUM_ROWS) {
            call[j]!!.enqueue(object : Callback<MovieResponse> {
                override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
                    //TODO
                    }

                override fun onFailure(call: Call<MovieResponse>, t: Throwable) {}
            })
        }
    }

错误说:

类型不匹配 - 必需:无

问题是,如果我将它作为 Nothing 插入,它将 return 一个空列表。我该如何解决?

Call<*> 表示它可以是 Call<MovieResponse>Call<Int> 或其他任何形式;您不能将 Callback<MovieResponse> 入队,因为它可能不是 Call<MovieResponse>。您应该能够简单地将第一行更改为

private val call = arrayOfNulls<Call<MovieResponse>>(NUM_ROWS)

(你不需要在这里指定 ? 因为它 returns Array<T?> 无论如何。)