@JvmSynthetic在 Kotlin 中的预期用途是什么?
我在kotlin-stdlib中遇到了@JvmSynthetic
注释,我想知道它有什么用,但不幸的是,它没有记录。(UPD:就是在那一刻)
据我所知,将其应用于程序元素会将修饰符添加到相应的字节码元素中。因此,该元素在 Java 中变得不可见:synthetic
class MyClass {
@JvmSynthetic
fun f() { }
}
Java 代码中的某个位置:
MyClass c = new MyClass();
c.f() // Error: cannot resolve method f()
但是相同的元素在 Kotlin 代码中仍然可见:
val c = MyClass()
c.f() // OK
隐藏来自非 Kotlin 源代码的声明是否是 ?这是预期用途吗?其他合适的用例是什么?@JvmSynthetic
由于从Java中隐藏了函数,因此它们也不能在Java中被覆盖(并且当涉及到成员时,调用结果为)。鉴于此,我是否可以禁止在 Java 源代码中重写 Kotlin 类的成员?@JvmSynthetic
abstract
AbstractMethodError
@JvmSynthetic