需要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
。
检查官方文档了解更多信息。
- IllegalArgumentException对unlockCanvasAndPost
- Kotlin Higher Order Function以可变数量的参数作为parameter passing一个函数
- 在kotlin中结合标志并清除背迹
- 我有一个错误:setOnItemClickListener不能用于微调,什么是错的?
- 如何使用Kotlin与Proguard
- Gradle – 以非零退出值完成1
- Gradle 3.0.0(在Android Studio 3.0中)重新排列任务序列(用Kotlin模块编译时)?
- 使用Kotlin for Android进行数据绑定问题
- Google的Duo应用程序支持哪些Android或Android应用程序?