泛型入参不对的问题

来源:8-2 泛型约束

cheny丶

2023-10-22

fun main() {
maxOf(AAA(), AAA())
}

fun <T: Comparable> maxOf(a: T,b: T): T{
return if (a > b) a else b
}

class AAA: Comparable{
override operator fun compareTo(other: Double): Int {
return 0
}
}

编译器提示 maxOf(AAA(), AAA()) 的 AAA() 类型不对 需要的是 Comparable 传入的是 AAA

老师 我该怎么修改

写回答

3回答

bennyhuo

2023-10-23

max函数里面 T要求是Comparable<T>的子类,也就是说,AAA必须是Comparable<AAA>的子类才行。
0
3
cheny丶
回复
bennyhuo
好的。可以了。谢谢老师
2023-10-23
共3条回复

bennyhuo

2023-10-23

override operator fun compareTo(other: Double): Int { return if (this > other) 1 else -1 }


other的类型应该是AAA吧
0
1
bennyhuo
等下,我看眼花了。。。手机上格式比较乱
2023-10-23
共1条回复

bennyhuo

2023-10-23

Comparable的泛型参数是啥?
0
1
cheny丶
fun main() { maxOf(AAA(), AAA()) } fun > maxOf(a: T,b: T): T{ return if (a > b) a else b } class AAA: Comparable{ override operator fun compareTo(other: Double): Int { return if (this > other) 1 else -1 } } AAA() 提示错误信息是 Type mismatch. Required: Comparable Found: AAA
2023-10-23
共1条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程