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

Kotlin中Int扩展函数无法调用问题及概念咨询

为什么无法调用SomethingUtil中的Int扩展函数?

你写的第一个函数是Int类型的扩展函数,不是SomethingUtil的普通成员函数,这就是你不能用SomethingUtil.something调用它的原因。

扩展函数的本质

扩展函数是Kotlin用来给现有类(比如这里的Int)添加新方法的特性,它不属于定义它的那个对象(SomethingUtil),而是依附于被扩展的类(Int)。所以调用它的正确姿势是以Int类型的实例作为调用主体,而不是通过定义它的对象去调用。

正确调用方式

比如:

// 用Int变量调用
val myInt = 10
val result = myInt.something(20)

// 直接用Int字面量调用
val anotherResult = 5.something(15)

如果要获取这个扩展函数的引用,也不能用SomethingUtil::something,得写成Int::something,比如:

val funcRef: (Int, Int) -> Int = Int::something
val result = funcRef(3, 7) // 等价于3.something(7)

和普通成员函数的区别

你第二个定义的是SomethingUtil的普通成员函数,它属于这个对象本身,所以可以直接通过SomethingUtil.something调用或者获取函数引用。但扩展函数的“归属”是被扩展的类,哪怕你把它定义在某个对象里,也改变不了这一点——那个对象只是它的作用域容器,决定了哪里能访问到这个扩展函数,而不是它的调用入口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:20:14