私はスウィングの表情に取り組んでいます& kotlinを使っている気分です。 UIを作成するために、スイングは、次のシグネチャを持つ静的メソッドcreateUI
有することが必要ですKotlin @Jvmコンパニオンオブジェクト内の静的で偶発的なオーバーライド
class ButtonUI: BasicButtonUI() {
...
companion object {
@JvmStatic fun createUI(p0: JComponent): ComponentUI {
...
}
}
}
をし、それは、スイングコードにリフレクションを介して呼び出される:
m = uiClass.getMethod("createUI", new Class[]{JComponent.class});
残念ながら、上記のコードは、理由のkotlinコンパイラでコンパイルすることはできません。
Error:(88, 9) Kotlin: Accidental override: The following declarations have the same JVM signature (createUI(Ljavax/swing/JComponent;)Ljavax/swing/plaf/ComponentUI;):
fun createUI(c: JComponent): ComponentUI
fun createUI(p0: JComponent!): ComponentUI!
これを回避する方法はあります場合?
'@JvmStatic override fun createUI'を試しましたか? – shiftpsh
@shiftpshオブジェクト宣言内では適用できません。 – dimafeng