相关疑难解决方法(0)

在Kotlin中以任何方式从相同的通用接口继承两次(使用不同的类型)?

我在我的代码中有一个场景,我想要一个类来实现两个不同类型的接口,比如这个例子:

interface Speaker<T> {
    fun talk(value: T)
}

class Multilinguist : Speaker<String>, Speaker<Float> {
    override fun talk(value: String) {
        println("greetings")
    }

    override fun talk(value: Float) {
        // Do something fun like transmit it along a serial port
    }
}
Run Code Online (Sandbox Code Playgroud)

Kotlin对此不满意,引用:

Type parameter T of 'Speaker' has inconsistent values: kotlin.String, kotlin.Float
A supertype appears twice
Run Code Online (Sandbox Code Playgroud)

我知道一个可能的解决方案是实现以下代码,我在其中实现接口,<Any>然后自己检查类型并将它们委托给它们的函数.

interface Speaker<T> {
    fun talk(value: T)
}

class Multilinguist : Speaker<Any> {
    override fun talk(value: Any) {
        when (value) {
            is String -> …
Run Code Online (Sandbox Code Playgroud)

generics interface multiple-inheritance kotlin

21
推荐指数
1
解决办法
2086
查看次数