【问题标题】:Java to Kotlin generics translationJava 到 Kotlin 泛型的翻译
【发布时间】:2016-12-14 09:53:39
【问题描述】:

我想迁移到 Kotlin 旧 Java 项目,发现很有趣,无法轻松地将其转换为 Kotlin

public interface BaseJView<P extends BaseJPresenter> {
    P createPresenter();
}
public interface BaseJPresenter<V extends BaseJView> {
    void bindView(V view);
}

您能否提供建议,我如何才能做到这一点?

【问题讨论】:

    标签: java generics kotlin


    【解决方案1】:

    一种方法是像这样使用recursive type definition

    interface BaseJView<TSelf : BaseJView<TSelf, P>, P : BaseJPresenter<P, TSelf>> {
        fun createPresenter(): P
    }
    
    interface BaseJPresenter<TSelf : BaseJPresenter<TSelf, V>, V : BaseJView<V, TSelf>> {
        fun bindView(view: V)
    }
    

    然后您可以:

    class Presenter : BaseJPresenter<Presenter, View> {
        override fun bindView(view: View) { ... }
    }
    class View : BaseJView<View, Presenter> {
        override fun createPresenter(): Presenter { ... }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 2021-03-10
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      相关资源
      最近更新 更多