Kotlin标准函数和静态方法

标准函数

with

第一个参数是一个类型或者对象,第二个参数是lambda表达式。其中第一个参数为第二个参数提供上下文,返回值是最后一行。案例代码:

Kotlin 复制代码
fun main() {
    val list = mutableListOf<String>()
    var ret = with(list) {
        add("1")
        remove("1")
        toString()
    }
    println(ret)
}

run

只有一个参数,是lambda表达式。返回值是最后一行,且它需要一个对象去调用:

Kotlin 复制代码
fun main() {
    var ret = mutableListOf<String>().run {
        add("1")
        add("2")
        remove("1")
        toString()
    }
    println(ret)
}

apply

和run类似,但是无法指定返回值。默认返回的是调用对象本身:

Kotlin 复制代码
fun main() {
    var ret = mutableListOf<String>().apply {
        add("1")
        add("2")
        remove("1")
    }
    println(ret.toString())
}

静态方法

单例类/companion object

Kotlin本身没有static关键字来支持静态函数,但是它本身有单例类的特性可以支持类似静态函数的功能。但是若想只把某个类的某个函数声明为静态函数的话,就需要加上companion object:

Kotlin 复制代码
class A{
    fun bb(){
        println("bb")
    }
    companion object{
        fun aa(){
            println("aa")
        }
    }
}
fun test(){
    A.aa()
}
fun main() {
    test()
}

注解(@JvmStatic)

Kotlin 复制代码
class A{
    fun bb(){
        println("bb")
    }
    companion object{
        @JvmStatic
        fun aa(){
            println("aa")
        }
    }
}
fun test(){
    A.aa()
}
fun main() {
    test()
}

注解只能用在单例类和companion object下。

相关推荐
杰克尼4 分钟前
今日面试题总结
java·开发语言·人工智能·langchain
昂好的day33 分钟前
固高运动控制卡实战(下):点位运动与直线/圆弧插补 API 详解
开发语言·c#
充值内卷36 分钟前
[特殊字符] 自己动手做一个类 tldraw 的桌面白板:StepDraw 开源啦(C++ + WebView2 + Canvas)
开发语言·c++
raindayinrain38 分钟前
c++对象模型--内存布局,多态,运行时类型识别
开发语言·c++
镜子AI40 分钟前
镜子AI工程实践:用熵权法 + TOPSIS 做多方案选型排序(零依赖 Python)
开发语言·人工智能·python
估值探索者41 分钟前
【Python量化组合管理实战 02】钱该怎么分?等权、波动率倒数与动态评分三种配权实测
java·开发语言·python·接口·股票数据api接口
西索斯coding1 小时前
Kimi K2.6 与 Qwen3.7 Max:跨文件修复评测与成本核算方法(2026)
开发语言·python·ai
从小白到软工1 小时前
5-2 从查表到控件:造按钮
c语言·开发语言·数据结构·经验分享·ai编程
山东孙燕姿1 小时前
设备台账重构:从一张表到三层模型
android·java·网络·低代码·重构·rxjava
迪康Defender2 小时前
PHP 高危漏洞应急分析:从风险原理到端点侧纵深防护
运维·开发语言·安全·自动化·php·运维开发·远程工作