kotlin - 扩展方法在Kotlin中如何工作?

标签 kotlin extension-function

在Java中,您不能扩展最终类,但在Kotlin中,您可以为此类最终类编写扩展方法。他们如何使其在内部运作?我找不到任何说明Kotlin扩展方法内部工作原理的文章。

最佳答案

In Java you cannot extend a final class, but in Kotlin you can write extension method to such final classes


我认为您假设扩展方法使用的继承不是。它是伪装在kotlin语法糖中的静态方法。例如,看下面的简单扩展方法:
String.removeSpace(): String {
    return this.replace(" ", "")
}
您可以认为它等同于以下Java代码。
static String removeSpace(String input) {
    return input.replace(" ", "")
}
kotlin在这里所做的是在其顶部提供包装器,以便通过使用this可以获得调用者的实例。通过将其与Kotlin将功能定义为头等公民的能力相结合,您可以编写出类似以下内容的精美文章:
fun String.removeSpace() = this.replace(" ", "")

关于kotlin - 扩展方法在Kotlin中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63285907/

相关文章:

Android Studio 代码覆盖率未显示任何 Kotlin 类

generics - 扩展函数内的 Kotlin KClass 实例

android - 最后一个扩展函数没有被调用

Kotlin 扩展日志函数与 logback(slf4j)

java - 使用 builder.setView() 设置 AlertDialog 宽度以适合固定大小 imageview 的大小

android - 如何使用 Kotlin 协程为 Android 单元测试注入(inject) viewModelScope?

kotlin - 空指针异常与 map 一起使用(Kotlin)

android - 如何禁用 Kotlin 中的按钮?

kotlin - 仅向 Kotlin 中具有多个类型参数的扩展函数提供一个类型参数

kotlin - 如何在 Kotlin 中内联扩展函数的接收器参数?