代码之家  ›  专栏  ›  技术社区  ›  The Zip Creator

如何在Kotlin中使用“where”并同时扩展另一个(泛型)类?

  •  0
  • The Zip Creator  · 技术社区  · 1 年前

    我有两个接口, Foo Bar ,我有一节课 Baz<T : Foo> .我想创建一个新类 Buz<T> 延伸 Baz ,在哪里 Buz 的类型参数同时扩展了 Foo 酒吧 。所以它看起来像这样:

    interface Foo
    interface Bar
    
    open class Baz<T : Foo>
    // doesn't work
    class Buz<T> where T : Foo, T : Bar : Baz<T>()
    

    在Kotlin中,实际的做法是什么?

    1 回复  |  直到 1 年前
        1
  •  2
  •   Sweeper    1 年前
    • 继承条款位于 where ... 类型约束。
    • 您需要通过添加以下内容来调用超类构造函数 () 之后 Baz<T> .
    • Baz<T> 必须是 open 允许其他类从中继承。

    所以你应该这样做:

    open class Baz<T : Foo>
    
    class Buz<T> : Baz<T>() where T : Foo, T : Bar