gpt4 book ai didi

kotlin - 这个 kotlin 代码是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 13:22:39 25 4
gpt4 key购买 nike

Kotlin 定义了自己的 String类(class):

public class String : Comparable<String>, CharSequence {
companion object {}
public operator fun plus(other: Any?): String
public override val length: Int
public override fun get(index: Int): Char
public override fun subSequence(startIndex: Int, endIndex: Int): CharSequence
public override fun compareTo(other: String): Int
}

此类的实例是通过 StringsJVM.kt 中定义的内联函数构造的。 :
public inline fun String(bytes: ByteArray, offset: Int, length: Int): String =
java.lang.String(bytes, offset, length, Charsets.UTF_8) as String

问题:
  • java.lang.String的 Actor 阵容如何?至kotlin.String工作?它不是子类型,而是 CharSequence 的单独实现
  • 成员(member) length是一个没有赋值的 val。这是如何编译的?它需要是一个 lateinit var

  • 我认为在编译之前必须进行某种代码预处理。

    请随时使用更贴切的标题编辑此问题。

    最佳答案

    基本上,kotlin.Stringmapped type ,这意味着,当编译成 JVM 字节码时,kotlin.String 的所有 Kotlin 用法类型被转换为 java.lang.String 的等效用法.

    此技术确保 Kotlin 和 Java 类型的兼容性,同时允许将 Kotlin 惯用 API 添加到 Java 类型。

    您可以inspect the *.class files由编译器生成,并看到他们提到了 java.lang.String .

    另见:a sililar Q&A .

    关于length的编译kotlin.String 的属性(property)根据 the Gradle build script 的定义,您可以看到它实际上从未被编译,而只是序列化为 Kotlin 内置元数据。对应的模块。

    关于kotlin - 这个 kotlin 代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51368579/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com