请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

泛型入参不对的问题

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

3回答

bennyhuo 2023-10-23 11:37:04
max函数里面 T要求是Comparable<T>的子类,也就是说,AAA必须是Comparable<AAA>的子类才行。
0 回复 有任何疑惑可以回复我~
  • 提问者 cheny丶 #1
    辛苦老师啦,对于这段代码 我该怎么改 才能正常
    回复 有任何疑惑可以回复我~ 2023-10-23 11:58:09
  • bennyhuo 回复 提问者 cheny丶 #2
    把double改成aaa
    回复 有任何疑惑可以回复我~ 2023-10-23 12:06:37
  • 提问者 cheny丶 回复 bennyhuo #3
    好的。可以了。谢谢老师
    回复 有任何疑惑可以回复我~ 2023-10-23 12:14:33
bennyhuo 2023-10-23 11:32:55
override operator fun compareTo(other: Double): Int { return if (this > other) 1 else -1 }


other的类型应该是AAA吧
0 回复 有任何疑惑可以回复我~
  • 等下,我看眼花了。。。手机上格式比较乱
    回复 有任何疑惑可以回复我~ 2023-10-23 11:33:25
bennyhuo 2023-10-23 09:47:39
Comparable的泛型参数是啥?
0 回复 有任何疑惑可以回复我~
  • 提问者 cheny丶 #1
    fun main() {
        maxOf(AAA(), AAA())
    }
    
    fun <T: Comparable<T>> maxOf(a: T,b: T): T{
        return if (a > b) a else b
    }
    
    class AAA: Comparable<Double>{
    
        override operator fun compareTo(other: Double): Int {
            return if (this > other) 1 else -1
        }
    }
    
    AAA() 提示错误信息是
     Type mismatch.
    Required:
    Comparable<AAA>
    Found:
    AAA
    回复 有任何疑惑可以回复我~ 2023-10-23 11:23:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信