代码之家  ›  专栏  ›  技术社区  ›  Andrei Tanana

Kotlin中的递归类型参数

  •  3
  • Andrei Tanana  · 技术社区  · 5 年前

    我想在科特林写类似的东西。

    open class View<P> where P:Presenter<out _this_class_> {
        val presenter: P = ...
    }
    
    open class Presenter<V> where V: View<out _this_class_> {
        val view: V = ...
    }
    

    我该怎么做?

    1 回复  |  直到 5 年前
        1
  •  4
  •   Alexey Romanov    5 年前

    标准方法(称为 F-bounded polymorphism

    open class View<V: View<V, P>, P: Presenter<out V>> { ... }
    

    这可能更有意义 out 其他地方,根据具体情况:

    open class View<out V: View<V, P>, out P: Presenter<V>> { ... }