gpt4 book ai didi

java - 编译后的kt文件是由字节码组成的?

转载 作者:行者123 更新时间:2023-11-29 04:25:41 24 4
gpt4 key购买 nike

我想了解编译后的 kotlin 是否是 java 字节码文件。在这个例子中,我展示了 kt 文件和类文件,还有一些我不知道的关键字存在于 java 中。例如,open val

编译后的kt文件是字节码组成的吗?编译后的kt文件是JVM直接执行的吗?

问候.kt

package org.jetbrains.kotlin.demo

data class Greeting(val id: Long, val content: String)

GrettingController.kt

@RestController
class GreetingController {

val counter = AtomicLong()

@GetMapping("/greeting")
fun greeting(@RequestParam(value = "name", defaultValue = "World") name: String) =
Greeting(counter.incrementAndGet(), "Hello, $name")

}

问候语类

public final data class Greeting public constructor(id: kotlin.Long, content: kotlin.String) {
public final val content: kotlin.String /* compiled code */

public final val id: kotlin.Long /* compiled code */

public final operator fun component1(): kotlin.Long { /* compiled code */ }

public final operator fun component2(): kotlin.String { /* compiled code */ }
}

GreetingController.class

@org.springframework.web.bind.annotation.RestController public open class GreetingController public constructor() {
public open val counter: java.util.concurrent.atomic.AtomicLong /* compiled code */

@org.springframework.web.bind.annotation.GetMapping public open fun greeting(@org.springframework.web.bind.annotation.RequestParam name: kotlin.String): org.jetbrains.kotlin.demo.Greeting { /* compiled code */ }
}

最佳答案

Kotlin 没有被翻译成 Java,而是直接编译成 JVM 字节码(*.class 文件)。一些 Kotlin 语言结构实际上不能用 Java 表达。

您显示的编译代码仅表示为 Kotlin 伪代码以方便阅读,存储在类文件中的其他 Kotlin 元数据用于此目的。

来自Kotlin FAQ :

What does Kotlin compile down to?

When targeting the JVM, Kotlin produces Java compatible bytecode. When targeting JavaScript, Kotlin transpiles to ES5.1 and generates code which is compatible with module systems including AMD and CommonJS. When targeting native, Kotlin will produce platform-specific code (via LLVM).

另请参阅:how to view the bytecode when using IntelliJ IDEA .

关于java - 编译后的kt文件是由字节码组成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46468847/

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