我收到来自 Comparable 接口的多个默认实现的编译器的平台声明冲突错误(如下所示)。
interface ClassA: Comparable<ClassA>
{
val x: Int
get
override fun compareTo(other: ClassA): Int = this.x.compareTo(other.x)
}
interface ClassB: Comparable<ClassB>
{
val y: String
get
override fun compareTo(other: ClassB): = this.y.compareTo(other.t)
}
data class ClassAB(val x: Int, val y: String): ClassA, ClassB
{
...
}
我明白为什么会出现此错误;在 Java中compareTo
映射到的两个默认实现。compareTo(Object)
因此,在孩子身上,Kotlin 不知道该使用哪一个。
是否有一种机制可以让我选择要使用的机制,或者更好的是,让我覆盖compareTo(Object)
?我试过定义compareTo(Any)
,但那是不对的。另一个帖子建议使用@JvmName
,但注释不适用于此处(根据编译器)。
任何帮助将不胜感激。谢谢!