我有两个接口,
Foo
和Bar
,并且我有一个类Baz<T : Foo>
。我想创建一个扩展 Buz<T>
的新类 Baz
,其中 Buz
的类型参数扩展 Foo
和 Bar
。所以它看起来像这样:
interface Foo
interface Bar
class Baz<T : Foo>
// doesn't work
class Buz<T> where T : Foo, T : Bar : Baz<T>
在 Kotlin 中执行此操作的实际方法是什么?
where ...
类型约束之前。()
之后添加 Baz<T>
来调用超类构造函数。Baz<T>
必须是 open
才能允许其他类继承它。所以你应该这样做:
open class Baz<T : Foo>
class Buz<T> : Baz<T>() where T : Foo, T : Bar