我需要做一个default void
Kotlin 接口中的方法。我遇到了一个问题,有一个提示说的用法@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(使用前将#替换为@)