gpt4 book ai didi

android - Kotlin 通用抽象函数

转载 作者:搜寻专家 更新时间:2023-11-01 07:42:55 25 4
gpt4 key购买 nike

我有一个抽象函数,我想在 BaseActivity 中获取我的任何 Activity Presenter

protected abstract fun <T : BasePresenter<V>, V : BaseView> getPresenter(): T

所以我的函数应该只接受扩展 BasePresenter 的类, View 扩展 BaseView

但是当我实现这个函数时,我得到一个错误

private lateinit var presenter: LauncherPresenter

override fun <T : BasePresenter<V>, V : BaseView> getPresenter(): T = presenter

Type mismatch.

Required: T

Found: LauncherPresenter

我知道这是个愚蠢的问题,但我不知道我哪里错了。

最佳答案

您不需要在函数中声明泛型,因为它已经在顶部的 BaseActivity 中指定。

例如您的BaseActivity:

abstract class BaseActivity<T : BasePresenter<V>, V : BaseView>() : 
AppCompatActivity(), BaseView {

protected abstract fun getPresenter(): T

}

其中 T 指定在顶部。

当您在 BaseActivity 的子级中实现功能时:

class LauncherActivity() : 
BaseActivity<LauncherPresenter<LauncherView>, LauncherView>(), LauncherView {

private lateinit var presenter: LauncherPresenter

//your override method
protected override fun getPresenter(): LauncherPresenter = presenter

}

关于android - Kotlin 通用抽象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51671303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com