Kotlin中如何同时使用where约束并继承泛型类?
正确实现方式
你原来的代码问题出在语法顺序错误,Kotlin中类的继承声明要放在类型参数之后,where约束子句要放在继承声明的后面。
正确的代码写法如下:
interface Foo interface Bar open class Baz<T : Foo> // 正确写法 class Buz<T> : Baz<T>() where T : Foo, T : Bar
说明:
- 先声明类名和类型参数
T,接着用: Baz<T>()指定继承关系 - 最后通过
where子句给T添加多重约束:同时实现Foo和Bar接口 - 因为
Baz要求泛型参数必须是Foo的子类型,这里where里的T : Foo也满足了父类的约束,不会冲突
内容的提问来源于stack exchange,提问作者The Zip Creator
相关产品推荐
相关产品推荐

