前置知识: Kotlin

扩展函数的编译原理

00:00
1 min Advanced 2026/6/14

Kotlin扩展函数编译原理详解。

1. 扩展函数本质

fun String.addExclamation(): String = this + "!"

编译静态方法

public static final String addExclamation(String receiver) {
    return receiver + "!";
}

2. 关键特性

2.1 不修改原类

扩展函数静态解析的,不会真正修改被扩展

2.2 静态分发

open class Animal
class Dog : Animal()

fun Animal.sound() = "Generic"
fun Dog.sound() = "Woof"

val animal: Animal = Dog()
animal.sound()  // "Generic" — 静态分发,看声明类型

2.3 不能访问私有成员

扩展函数不能访问的 private 成员,因为它本质上是外部静态方法

3. 与成员函数冲突

class Foo {
    fun bar() = "member"
}

fun Foo.bar() = "extension"

Foo().bar()  // "member" — 成员函数优先

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式