通用扩展类 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 &lt;T&gt; wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService。我不在乎T的类型。但是当我调用这个方法时,Kotlin 会询问具体的类型。那么我该如何调用这个方法呢?

以上是关于通用扩展类 AND 在 Kotlin 中实现接口的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中实现通用 JPA 存储库 - 它可以自动装配到任何实体/类类型的 Spring 服务中

Android:如何在ActivityClass和Class中实现接口类

kotlin中实现匿名内部类

在 Java 中实现和使用通用的抽象接口

如何在 kotlin 中实现 List<data class>(子列表)的 parcelable?

从Java线程到kotlin协程之线程的基本使用