gpt4 book ai didi

java - 为什么 Kotlin 集合的运行时类是 Java 类?

转载 作者:行者123 更新时间:2023-12-03 01:17:28 24 4
gpt4 key购买 nike

在 JetBrains(位于 Coursera)的“Kotlin for Java-Developers”类(class)中,Kotlin 代码直接编译为字节码。然后该字节码在 JVM 上执行。

但是当我这样做时:

var list = listOf<String>("A", "B", "C")
println(list::class) // => Prints "class java.util.Arrays$ArrayList"

显然下面使用的是普通的Java ArrayList。所以我很困惑...

Kotlin 只是一些“更现代”的语法,它在底层使用了 Java?

实际上是一些语法糖,它被放在顶部,以便人们可以以更好的方式编写代码。但其底层仍然是同样古老的 Java 事物。

最佳答案

Is Kotlin just some "more modern" syntax thing, which uses Java underneath?

没有。您的 Kotlin 源>正在<<编译为字节码。

但是您的代码正在使用 listof Kotlin 库函数,该函数的实现返回一个 Java 类实例的值。

为什么?

  1. 以这种方式实现它可能更容易/更快。 (根据列表对象的类型,我们可以推断 listof 只是调用 java.util.Arrays.asList(...) 。)
  2. 重新实现它可能没有什么好处;例如没有性能优势。
  3. 可能有缺点;例如对于那些需要 Kotlin 代码与使用标准 Java 集合类的 Java 进行互操作的人来说,这可能会导致问题。

关于java - 为什么 Kotlin 集合的运行时类是 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61555389/

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