You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin出现Overload resolution ambiguity重载解析歧义错误如何修复

报错原因

该重载歧义错误是因为Kotlin标准库中存在多个名为sum的公共函数,直接通过::sum获取函数引用时,编译器无法区分你要引用的是自定义的双参数Double类型sum函数,还是标准库中的其他sum重载。

解决方案

有两种常用的修复方式:

方案1:显式声明变量的函数类型

直接指定fn的类型为(Double, Double) -> Double,编译器就会自动匹配到符合该类型签名的自定义sum函数,代码修改如下:

fun main(args:Array<String>) {
    println(sum(2.0,3.0))
    println(power(2.0,3.0))
    // 显式指定fn的函数类型
    var fn: (Double, Double) -> Double = ::sum
}

fun sum(a:Double, b:Double):Double{
    return a+b
}
fun power(a:Double, b:Double):Double{
    return a.pow(b)
}

方案2:通过包名明确指定自定义sum的来源

如果你的代码声明了包名(比如包名为com.demo),可以在函数引用前加上包名,明确指定引用的是自定义的sum函数,示例:

package com.demo

fun main(args:Array<String>) {
    println(sum(2.0,3.0))
    println(power(2.0,3.0))
    // 加包名明确引用来源
    var fn = com.demo::sum
}

fun sum(a:Double, b:Double):Double{
    return a+b
}
fun power(a:Double, b:Double):Double{
    return a.pow(b)
}

内容的提问来源于stack exchange,提问作者Aditya Vyas-Lakhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:12:03