1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| Kotlin 顶层函数(Top-level Function)总结 1️⃣ 定义
顶层函数就是直接写在 .kt 文件里的函数,不属于任何类或对象。
可以看作是 Java 工具类的静态方法,自动被编译成 JVM 静态方法。
// 文件名: Utils.kt fun sayHello(name: String) { println("Hello, $name") }
fun add(a: Int, b: Int): Int = a + b
调用方式(Kotlin):sayHello("Alice")
调用方式(Java):UtilsKt.sayHello("Alice")
2️⃣ 顶层属性(静态字段)
顶层 val / var 也是静态的,JVM 编译后是静态字段。
val PI = 3.1415 // 常量 var counter = 0 // 可变静态变量
Kotlin 调用:println(PI) 或 counter += 1
Java 调用:UtilsKt.PI / UtilsKt.getCounter() / UtilsKt.setCounter()
3️⃣ JVM 编译规则 Kotlin 元素 JVM 编译结果 顶层函数 静态方法 顶层属性 静态字段 + getter/setter 文件名 JVM 类名 = 文件名 + Kt
例:Utils.kt → JVM 类 UtilsKt
4️⃣ 与 Java 工具类对比 Java Kotlin static 方法 顶层函数 static 字段 顶层属性 (val/var) 工具类类名 Kotlin 文件名
Kotlin 不需要 class + static,更简洁。
5️⃣ 使用建议
顶层函数和顶层属性可以放在同一个文件里,集中管理相关工具方法。
按功能划分文件,不要把所有工具方法放在一个文件中(可维护性差)。
顶层函数也可以在 Java 中调用,非常方便。
6️⃣ 对比 companion object
如果必须在类内部写静态成员,用 companion object:
class MyClass { companion object { const val VERSION = "1.0" fun greet() = println("Hello") } }
优点:类内部有组织
缺点:比顶层函数多了一层类包裹,调用稍麻烦
7️⃣ 总结一句话
Kotlin 顶层函数 = 静态工具方法 + 静态属性,可以直接写在文件里,不需要 class 或 static。
|