java - Kotlin 泛型转换为更具体的子类

标签 java android generics kotlin mvp

所以我试图搞乱 Kotlin,我有一个旧的 Java MVP 框架,在 Java 中有一些糟糕的泛型,我们不得不将一个通用接口(interface)转换为一个更具体的接口(interface),比如 public <P extends BaseContract.Presenter> P getPresenter()

我们将在子类中将其转换为

@Override
public AdvertisementContract.Presenter getPresenter()
{
    return (AdvertisementContract.Presenter)super.getPresenter();
}

在 Kotlin 中,我会这样做:

override fun getPresenter(): AdvertisementContract.Presenter
{
    return super.getPresenter() as AdvertisementContract.Presenter
}

如果不修复基本接口(interface)中的泛型,我还能做什么?

最佳答案

根据我对你问题的理解,你可以这样做,

override fun <P: BaseContract.Presenter> getPresenter(): P {
    return mPresenter
}

其中 mPresenter 可以是扩展 BaseContract.Presenter 类的 Any Presenter 的实例

关于java - Kotlin 泛型转换为更具体的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137129/

相关文章:

generics - 处理惯用函数链中的空列表

c - C11 中 _Generic 的语法和示例用法

java - NodeJs使用pbkdf2Sync加密并在java中解密

java soap webservice xml到对象

java - 如果想在 RCP 应用程序开发中添加本地 p2 更新站点,如何使用 Tycho 在 pom.xml 的 <repository> 部分中指定 <id> 和 <url>?

c# - xamarin 中的 "layout renderer failed"错误

android - 当应用程序从任务管理器中终止时服务崩溃

java - 使用泛型方法返回类型、列表

java - 类变量和构造函数中的参数有什么区别?

具有共享 View 模型的 Android 导航组件