@JvmDefault 以及如何添加编译器选项

2024-01-29

我需要做一个default voidKotlin 接口中的方法。我遇到了一个问题,有一个提示说的用法@JvmDefault只允许与-Xjvm-default option.

我需要在哪里写这个Xjvm-default?


@Target([AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY])注释类JvmDefault

指定应该生成 JVM 默认方法 非抽象 Kotlin 接口成员。

使用此注释需要显式编译参数 指定:要么-Xjvm-default=enable or -Xjvm-default=compatibility.

with -Xjvm-default=enable,只为每个生成接口中的默认方法@JvmDefault方法。在此模式下,注释 现有方法与@JvmDefault可能会破坏二进制兼容性, 因为它会有效地从DefaultImpls班级。

with -Xjvm-default=compatibility,除了默认界面 方法中,会生成一个兼容性访问器DefaultImpls类,通过调用默认接口方法 合成访问器。在此模式下,使用注释现有方法@JvmDefault是二进制兼容的,但会产生更多方法 字节码。

从接口成员中删除此注释是一个二进制文件 两种模式中不兼容的更改。

只有使用 JVM 目标才能生成默认方法 字节码版本 1.8 (-jvm-target 1.8) 或更高。

@JvmDefault方法被排除在接口委托之外。

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-default/index.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-default/index.html

如果您使用 gradle 则将此参数添加到 gradle 脚本中

https://kotlinlang.org/docs/reference/using-gradle.html https://kotlinlang.org/docs/reference/using-gradle.html

例如将其添加到 gradle:

kotlinOptions {
    freeCompilerArgs = ['-Xjvm-default=compatibility']
}

否则如果你使用 Kotlinc 命令行编译器添加-Xjvm-default=compatibility在命令行中执行命令之后

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@JvmDefault 以及如何添加编译器选项 的相关文章

随机推荐

  • 从 Spark 集群收集数据时出现内存不足错误

    我知道有很多关于 Spark 内存不足错误的问题 但我还没有找到解决方案 我有一个简单的工作流程 从 Amazon S3 读取 ORC 文件 filter直至一小部分行 select一小部分列 collect进入驱动程序节点 这样我就可以在
  • 我们如何在 Spring Boot 中使用任一验证?

    我的 bean 中有两个变量 我想要填写名称或手机 它们不能同时为空 NotNull private String name NotNull private String mobile 我怎样才能做到这一点 您需要为此编写自定义注释并在类上
  • Apache X-Frame-Options 允许来自多个域

    当我在 apache 中使用 x frame headers 选项时出现错误 Header always append X Frame Options ALLOW FROM site1 site2 site3 or Header alway
  • 指向作为 JNA 方法参数的结构数组的指针

    我正在尝试创建一个 JNA 实现SctpDrv http www bluestop org SctpDrv 图书馆 我的问题是我不了解指向结构数组的指针 我试图寻找解决方案 但它们总是与我需要知道的略有不同 JNA 文档仅显示了一个带有指向
  • Java 中 CRTP 的替代品 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 The CRTP https en wikipedia org wiki Curiously recurring template patter
  • 在 React Native 中存储来自 json api 的大数据集合的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要制作一个具有离线功能的应用程序 可以从 json api 获取大约 10 000 个对象 估计 10mb 数据 并将它们存储在本地 以便在
  • Eloquent:带时间戳的默认值无效

    这是我的迁移架构 public function up Schema create objects function Blueprint table table gt increments id table gt timestamp tim
  • UICollectionView补充视图如何正确插入或删除

    简短的问题 有没有办法添加和删除补充视图 例如单元格和部分performBatchUpdates 块类似于insertItemsAtIndexPaths deleteItemsAtIndexPaths 甚至reloadItemsAtInde
  • 为什么 Oracle 不告诉你哪个表或视图不存在?

    如果您使用过 Oracle 您可能会收到有用的消息 ORA 00942 表或视图不存在 该消息不包含丢失对象的名称是否存在合法的技术原因 关于这是出于安全原因的争论听起来像是美国运输安全管理局 TSA 精心策划的 如果我是攻击者 我就会知道
  • 如何使用 d.items() 更改 for 循环中的所有字典键?

    我需要一些帮助来理解为什么这段代码没有按预期工作 如果想更改字典的键但保留值 他 她可以使用 d new key d pop old key 我想修改所有键 并将值保留在适当的位置 但下面的代码会跳过某些行 col2 保持不变 是因为字典是
  • 为什么管道的容量有限?

    我读到管道需要有有限的容量 但我不明白为什么 如果进程无限制地写入管道会发生什么 这是由于缓冲 管道并不 神奇 管道并不能确保所有进程都按步调一致地处理每个单独的字节或字符 相反 管道缓冲进程间输出 然后传递缓冲区 这个缓冲区大小限制就是您
  • 带滑动菜单的 Sherlock 操作栏

    我正在创建一个扩展 SherlockMapActivity 的视图和活动 并使用 SlidingMenu 库使我的主视图像 Google 一样滚动 我已经通过 XML 添加了 SlidingMenu 并且我的视图滚动完美地显示了隐藏菜单 但
  • 如何停止matlabplot3缩放

    我想使用绘制摆 改变位置 plot3功能 不幸的是 当我的点在循环中改变位置并再次绘制时 3d 图的比例也在变化 因此 x 轴取决于位置变化 取决于点的位置 它可以从 1 到 1 5 或从 1 到 3 并且 y 也会改变 只有 z 表示相同
  • 如何检测 Ag-grid 中的细胞模糊(失焦)事件

    我需要检测网格单元何时在农业网格中失去焦点 我已经检查了文档中可用的 API 但没有找到任何类似于单元格模糊的内容 https www ag grid com javascript grid events https www ag grid
  • SBT 在所有子项目之后运行任务

    我想编写一个在所有子项目任务完成后运行的任务 例如 如果我这样做 sbt a b然后在所有子项目上完成任务 a 后 我想执行任务 b 我不想对每个项目都做 a b 那可能吗 事实上 我会直接修改build sbt 我不一定必须在命令行中指定
  • 如何在 Excel 2007 中执行两个二进制数的异或计算

    我想对两个二进制数执行异或计算 例如 在工作表 1 上 Range A1 10101010 Range A2 11100010 现在我需要对A1 A2结果进行异或运算得到A3 我尝试了不同的公式的两个执行异或计算 例如 A1 A2 BITX
  • 使用 python 在不同的 virtualenv 中运行子进程

    假设我在 2 个不同的虚拟环境中安装了 2 个不同版本的应用程序 myapp v1 0 和 myapp v2 0 现在我想对它们进行比较 比较是用 python 本身编写的 最好的方法是什么 假设我可以单独运行它们并写入一个输出文件 以便稍
  • Django 按月/按季度对 Date Field() 数据进行分组

    我有一个 django 模型 其中包含日期字段 属性 class Table date models DateField value models FloatField 我正在编写一个视图 按周 月 季度和年份对这些数据进行分组 我已经硬编
  • 接口隔离原则只是单一职责原则的替代品吗?

    接口隔离原则只是单一责任原则的替代品吗 我认为如果我的类满足 SRP 则无需提取多个接口 因此 ISP 看起来像是解决方案 以防我们因某种原因必须破坏 SRP 我对吗 不 以一个类为例 该类的职责是保存数据 例如硬盘 将类分为读部分和写部分
  • @JvmDefault 以及如何添加编译器选项

    我需要做一个default voidKotlin 接口中的方法 我遇到了一个问题 有一个提示说的用法 JvmDefault只允许与 Xjvm default option 我需要在哪里写这个Xjvm default Target Annot