Kotlin – 用泛型类型的参数声明泛型类
所以我有一个像这样的BasePresenter类。 BaseMvpView是一个接口
open class BaseMvpPresenter<View : BaseMvpView> { }
我正在尝试创建一个BaseMvpActivity类,它是用BaseMvpPresenter参数化的,如下所示:
abstract class BaseMvpActivity<T : BaseMvpPresenter> : BaseActivity(), BaseMvpView { }
但是我得到以下错误:
One type argument expected for class BaseMvpPresenter<View: BaseMvpView>
我如何正确地申报? 我希望能够像这样使用BaseMvpActivity:
abstract class BaseMvpActivity<T : BaseMvpPresenter<U>, U : BaseMvpView> : BaseActivity(), BaseMvpView { abstract var presenter: T override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) presenter.onViewCreated(this) } override fun onDestroy() { presenter.onViewDestroyed() super.onDestroy() } }
您需要将参数传递给BaseMVPPresenter
。 您可以按如下方式向抽象类中添加第二个参数
abstract class BaseMvpActivity<V: BaseMvpView, T : BaseMvpPresenter<V>> : BaseActivity(), BaseMvpView { }
所以可以说,你正在创建一个视图来显示帖子,那么你会做这样的事情:
class Activity : BaseMVPActivity<PostsView, PostPresenter<PostView>() { //Here comes your code }
希望这可以帮助 :)
- 当我在java中使用DigestUtils.md5Hex时,得到了错误的结果
- Kotlin的Android扩展和变量
- 在Kotlin中定义log TAG常量的最好方法是什么?
- Google Firebase在Android应用中注销并忘记用户
- 总是使用Kotlin Android的supportActionBar为null
- 错误:未找到注释处理器'__gen.AnnotationProcessorWrapper_debug_android_databinding_annotationprocessor_ProcessDataBinding'
- Kotlin的房间数据库有什么问题?
- Kotlin没有拿起资源ID
- Android – 使功能为false /不运行