2016-07-15 8 views

Antwort

13

Diese Funktion scheint in keiner Weise implementiert zu sein.

@ AndreyBreslav Kommentar auf einem similar question:

Sie können nicht außer Kraft setzen Java-Methoden mit Kotlin Eigenschaften im Moment. Es wäre schön, wenn wir sie unterstützen können, aber wir wissen nicht, wie es für gemischte Hierarchien


Diese konsequent tun löst nicht das Problem, aber zumindest macht den Code Kompilierung: Sie ändern können JVM Name des Getter mit den @JvmName annotation:

interface A { 
    fun getFoo(): SomeType 
} 

class B: A { 
    override fun getFoo() = foo 

    val foo: SomeType = someValue() 
     @JvmName("getFoo_") get() = field 
} 

bedenken Sie auch zu einem idiomatischen Ansatz zu ändern: definiert die val -property in Ihrer Schnittstelle, so dass Sie es bei der Umsetzung außer Kraft setzen können s:

interface A { 
    val foo: SomeType 
} 

class B : A { 
    override val foo: SomeType = someValue() 
} 

class C : A { 
    override val foo: SomeType 
     get() = someCustomGetter() 
} 
+1

UPD: Hinzugefügt einen Kotlin-idiomatischen Ansatz. – hotkey

Verwandte Themen