Kotlin生成jvm8或jvm6代码。考虑以下:
这可能吗?如果是这样,这是如何工作的?
这是JVM的工作方式,并不是Kotlin特有的。
假设你有两个类Class1
和Class2
,而Class1
需要调用Class2
。然后Class1
的字节码只使用Class2
的名字和其成员的签名。它不知道或不关心Class2
是为Java 5,Java 11还是Java 5000编译的。
Class1
字节码表示例如“用这些参数调用这个Class2
构造函数”。执行此代码时,将加载Class2
(如果尚未加载),并将其字节码版本与JVM理解的版本进行比较。