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

Kotlin是否支持更简短的单方法接口声明语法?

现有写法

目前在Kotlin中,我们可按照如下形式定义接口:

interface AnimalStrategy {
    fun eat(): Outcome
}

期望实现

咨询问题:Kotlin中是否存在更简短的接口声明语法,可实现如下形式的接口定义?

interface AnimalStrategy = fun eat(): Outcome

回答

Kotlin 原生不支持上述等号连接的单方法接口简写语法,针对单抽象方法类型的简化需求,有两个成熟的替代方案:

  • 用类型别名映射函数类型
    如果你的接口仅包含一个抽象方法,完全不需要单独声明interface,直接用typealias给对应签名的函数类型起别名即可,写法比你期望的形式更精简:
    typealias AnimalStrategy = () -> Outcome
    
    这种写法下,所有符合「无参、返回值为Outcome」签名的函数、Lambda表达式都可以直接作为AnimalStrategy类型的实例使用,不需要编写匿名实现类。唯一的限制是类型别名本质是函数类型的同义词,无法为其定义专属的继承关系、成员约束,适合纯函数式的策略场景。
  • 用fun interface声明函数式接口
    如果你需要保留独立接口的语义(比如要给接口增加非抽象方法、限制实现类范围),Kotlin 1.4及以上版本支持带SAM转换的函数式接口声明,兼顾接口的扩展性和使用简洁性:
    fun interface AnimalStrategy {
        fun eat(): Outcome
    }
    
    声明为fun interface后,可以直接用Lambda表达式创建接口实例,不需要写冗长的object : AnimalStrategy匿名实现代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:06:27