【问题标题】:Generic extending class AND implements interface in Kotlin通用扩展类 AND 在 Kotlin 中实现接口
【发布时间】:2015-12-26 11:02:50
【问题描述】:

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

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

这在 Kotlin 中的语法是什么?

【问题讨论】:

    标签: generics 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 会询问具体的类型。那么我该如何调用这个方法呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多