通用扩展类 AND 在 Kotlin 中实现接口
Posted
技术标签:
【中文标题】通用扩展类 AND 在 Kotlin 中实现接口【英文标题】:Generic extending class AND implements interface in Kotlin 【发布时间】:2015-12-26 11:02:50 【问题描述】:假设我想要一个类型变量 T,它扩展了某个类并实现了一个接口。比如:
class Foo <T : Bar implements Baz> ...
这在 Kotlin 中的语法是什么?
【问题讨论】:
【参考方案1】:尖括号内只能指定一个上限。
当存在多个约束时,Kotlin 为通用约束提供不同的语法:
class Foo<T>(val t: T) where T : Bar, T : Baz ...
对于函数:
fun <T> f(): Foo where T : Bar, T : Baz ...
记录在案here。
【讨论】:
有什么方法可以将它用于fun的参数类型,例如fun foo(arg : ClassType, InterfaceType)?不向类添加类型参数 @Ufkoku,不,没有办法:Kotlin 中没有交集类型,泛型参数只能显式声明。 @hotkey 我在下面有一个函数:fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService
。我不在乎T的类型。但是当我调用这个方法时,Kotlin 会询问具体的类型。那么我该如何调用这个方法呢?以上是关于通用扩展类 AND 在 Kotlin 中实现接口的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中实现通用 JPA 存储库 - 它可以自动装配到任何实体/类类型的 Spring 服务中
Android:如何在ActivityClass和Class中实现接口类