@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 及更高版本。