通用扩展类并在Kotlin中实现接口


86

假设我想要一个类型变量T,它扩展了某个类并实现了一个接口。就像是:

class Foo <T : Bar implements Baz> { ... }

Kotlin的语法是什么?

Answers:


179

尖括号内只能指定一个上限。

当存在多个约束时,Kotlin为通用约束提供不同的语法:

class Foo<T>(val t: T) where T : Bar, T : Baz { ... }

和功能:

fun <T> f(): Foo where T : Bar, T : Baz { ... }

它记录在这里


3
有什么方法可以将它用于fun的参数类型,例如fun foo(arg:ClassType,InterfaceType){}?没有在类中添加类型参数
Ufkoku

1
@Ufkoku,不,没有办法:Kotlin中没有交集类型,并且泛型参数只能显式声明。
热键

@hotkey我有以下功能:fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService。我不在乎T的类型。但是,当我调用此方法时,Kotlin要求提供特定的类型。那我怎么称呼这个方法呢?
leimenghao
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.