kotlin - kotlin 可以调用 jvm11 代码吗?如何?
问题描述
Kotlin 生成 jvm8 或 jvm6 代码。考虑以下:
- 您编写了一个 jvm11(在 java 中)库
- 您编写了一个希望使用 jvm11 库的 kotlin 应用程序
这可能吗?如果是这样,这在引擎盖下是如何工作的?
解决方案
这是 JVM 的工作方式,完全不是 Kotlin 特有的。
假设您有两个类Class1
,Class2
并且Class1
需要调用Class2
. ThenClass1
的字节码仅使用Class2
其成员的名称和签名。它不知道也不关心Class2
是为 Java 5、Java 11 还是 Java 5000 编译的。
Class1
字节码说例如“用这些参数调用这个构造Class2
函数”。执行此代码时,Class2
将加载(如果尚未加载)并将其字节码版本与 JVM 理解的版本进行比较。
推荐阅读
- php - 打开所需文件失败?
- r - 在组合条形图中保留缺失列的位置
- firebase - 如何避免拾取已经存在的数据库节点--Recyclerview Items
- gnuplot - gnuplot qt:超链接和点击事件
- javascript - React:当用户开始输入时删除默认值
- php - 具有多个配置的多个生产环境
- mysql - 无法在子查询中删除 WHERE
- amazon-web-services - AWS > 负载均衡器 + Cloudfront - 最好的方法是什么
- python - pip install Pygame 后导入 Pygame 时出现 ModuleNotFoundError
- javascript - 具有动态键的对象的访问键名