mam trzeci biblioteki strona Java z klasy jakKotlin interfejs klasy Java: przypadkowe nadpisanie
public class ThirdParty {
public String getX() {
return null;
}
}
Mam też interfejs w Kotlin jak
interface XProvider {
val x: String?
}
Teraz chcę przedłużyć ThirdParty
klasyfikuj i implementuj interfejs XProvider
. Zostało to działa dobrze w moim legacy kodu Java:
public class JavaChild extends ThirdParty implements XProvider {}
Jednak chciałbym napisać jak najwięcej jak to możliwe, Kotlin i próbuję przekonwertować moje klasy java do Kotlin. Niestety, dodaje nie działa:
class KotlinChild: ThirdParty(), XProvider
Błąd jest
class 'KotlinChild1' must be declared abstract or implement abstract member public abstract val x: String? defined in XProvider
Jednakże, jeśli robię coś
class KotlinChild1: ThirdParty(), XProvider {
override val x: String? = null
}
uzyskać
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
Co działa to następujące brzydkie obejście:
class KotlinChild: JavaChild()
Jaki błąd otrzymasz? – marstran
Przepraszam, zapomniałem. Zaktualizowałem pytanie: – dpoetzsch
Możliwy duplikat [Błędy rozstrzygania przypadkowych błędów w Kotlin] (http://stackoverflow.com/questions/32970923/resolving-accidental-override-errors-in-kotlin) – mfulton26