Ich habe eine dritte Partei Java-Bibliothek mit einer Klasse wieKotlin Schnittstelle eine Java-Klasse: versehentliche Überschreibung
public class ThirdParty {
public String getX() {
return null;
}
}
ich auch eine Schnittstelle in Kotlin haben wie
interface XProvider {
val x: String?
}
Jetzt möchte ich die verlängern ThirdParty
Klasse und implementieren Sie die XProvider
Schnittstelle. Dies wurde gut funktioniert in meinem Vermächtnis Java-Code:
public class JavaChild extends ThirdParty implements XProvider {}
Allerdings würde ich so viel Kotlin wie möglich zu schreiben und ich versuche, meine Java-Klassen zu konvertieren Kotlin. Leider ist die folgende nicht:
class KotlinChild: ThirdParty(), XProvider
Fehler
class 'KotlinChild1' must be declared abstract or implement abstract member public abstract val x: String? defined in XProvider
jedoch ist, wenn ich etwas zu tun wie
class KotlinChild1: ThirdParty(), XProvider {
override val x: String? = null
}
I
error: accidental override: The following declarations have the same JVM signature (getX()Ljava/lang/String;)
fun <get-x>(): String?
fun getX(): String!
override val x: String? = null
bekommen Was funktioniert, ist, das folgende hässliche Workaround:
class KotlinChild: JavaChild()
Welche Fehler bekommen Sie? – marstran
Sorry, habe das vergessen. Ich aktualisierte die Frage – dpoetzsch
Mögliches Duplikat von [Auflösen von versehentlichen Übersteuerungsfehlern in Kotlin] (http://stackoverflow.com/questions/32970923/resolving-accidental-override-errors-in-kotlin) – mfulton26