需要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
我似乎无法解决这个问题。 我该如何解决?
您已经在BasePresenter
, BasePresenter
声明了generics参数V ,所以presenter.bindView
不能使用输入参数。
解决方案:将声明更改为BasePresenter
。
检查官方文档了解更多信息。