【发布时间】:2015-12-26 11:02:50
【问题描述】:
假设我想要一个类型变量 T,它扩展了某个类并实现了一个接口。比如:
class Foo <T : Bar implements Baz> { ... }
这在 Kotlin 中的语法是什么?
【问题讨论】:
假设我想要一个类型变量 T,它扩展了某个类并实现了一个接口。比如:
class Foo <T : Bar implements Baz> { ... }
这在 Kotlin 中的语法是什么?
【问题讨论】:
尖括号内只能指定一个上限。
当存在多个约束时,Kotlin 为通用约束提供不同的语法:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... }
对于函数:
fun <T> f(): Foo where T : Bar, T : Baz { ... }
记录在案here。
【讨论】:
fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService。我不在乎T的类型。但是当我调用这个方法时,Kotlin 会询问具体的类型。那么我该如何调用这个方法呢?