@JvmOverloads kotlin 接口伴随对象函数上的错误
@JvmOverloads error on kotlin interface companion object function
不能在 kotlin 接口伴随对象函数上使用 @JvmOverloads,即使是 @JvmStatic:
interface Foo {
companion object {
@JvmStatic
@JvmOverloads
fun bar(a: Int = 1, b: Int = 2){}
}
}
编码时IDEA没有报错,编译报错:
Method bar in class Foo has illegal modifiers: 0x19
java.lang.ClassFormatError: Method bar in class Foo has illegal modifiers: 0x19
问题已解决,这是一个错误,已在 1.4.20 中修复
它是编译器中的 bug。将在 1.4.20 中修复。
根据https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html:
默认方法仅适用于目标 JVM 1.8 及更高版本。
不能在 kotlin 接口伴随对象函数上使用 @JvmOverloads,即使是 @JvmStatic:
interface Foo {
companion object {
@JvmStatic
@JvmOverloads
fun bar(a: Int = 1, b: Int = 2){}
}
}
编码时IDEA没有报错,编译报错:
Method bar in class Foo has illegal modifiers: 0x19
java.lang.ClassFormatError: Method bar in class Foo has illegal modifiers: 0x19
问题已解决,这是一个错误,已在 1.4.20 中修复
它是编译器中的 bug。将在 1.4.20 中修复。
根据https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html:
默认方法仅适用于目标 JVM 1.8 及更高版本。