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下。

相关推荐
小羊没烦恼!13 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
千里马学框架13 小时前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台13 小时前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone14 小时前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
伞伞悦读14 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
致远ccc14 小时前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
C语言小火车15 小时前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁16 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
ttyyttemo16 小时前
Kotlin 协程中的 Job 结构化并发与取消
android
孙启超16 小时前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust