需要Kotlin函数什么都不是,而是定义为一个不同的types

我像这样定义了一个类

abstract class MvpViewHolder

(itemView: View) : RecyclerView.ViewHolder(itemView) where P : BasePresenter { protected var presenter: P? = null fun bindPresenter(presenter: P): Unit { this.presenter = presenter presenter.bindView(itemView) } }

presenter.bindView(itemView)给我一个错误,说明Type mismatch, required: Nothing, found: View! 。 我已经在presenter类中定义了bindView ,就像这样

 abstract class BasePresenter { var view: WeakReference? = null var model: M? = null fun bindView(view: V) { this.view = WeakReference(view) } } 

它正在考虑一个价值观view: V

我已经尝试使用明星syntaxt BasePresenter定义BasePresenter的扩展BasePresenter但是我得到相同的错误。 我也尝试使用只是简单的BasePresenter修复直接的问题,但随后任何扩展P: BasePresenter给出一个错误,说它期待P,但得到BasePresenter

这里是我的代码中发生的一个例子

 abstract class MvpRecyclerListAdapter<M, P : BasePresenter, VH : MvpViewHolder

> : MvpRecyclerAdapter() {...}

在这一行上,我会得到上面提到的错误扩展MvpRecyclerAdapter

我似乎无法解决这个问题。 我该如何解决?

您已经在BasePresenterBasePresenter声明generics参数V ,所以presenter.bindView不能使用输入参数。

解决方案:将声明更改为BasePresenter

检查官方文档了解更多信息。