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

Kotlin SAM接口函数含默认参数报错问题咨询

SAM接口带默认值参数报错问题解析

问题场景

当遵循SonarLint建议,将仅包含单个函数的接口转换为Kotlin SAM接口(使用fun interface关键字)时,若函数参数带有默认值会触发报错,示例代码如下:

fun interface HomeListener {
   fun setSubTitle(subtitle: String = DEFAULT_VALUE_STRING)
}

原因分析

这属于Kotlin在JVM平台上的设计限制:

  • SAM接口的核心要求是仅包含一个抽象成员,以此实现类似Java的SAM转换特性。
  • Kotlin的函数默认值是编译期实现的特性,编译器会为带默认值的函数生成多个重载版本(比如自动生成一个不带该默认参数的重载函数)。
  • 这些自动生成的重载会导致fun interface的抽象成员数量超过一个,违反了SAM接口的定义规则,因此编译报错。

官方状态

JetBrains问题追踪器上已有对应Bug记录,自2021年起暂无更新,该问题目前尚未得到官方修复。

内容的提问来源于stack exchange,提问作者Bitwise DEVS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:04:51