0%

kotiln顶层函数

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。