2016-07-15 122 views

risposta

13

Questa funzione sembra non essere implementata in alcun modo.

@ commento di AndreyBreslav su un similar question:

Non è possibile sostituire i metodi Java con proprietà Kotlin al momento. Sarebbe bello se si potesse sostenerlo, ma non sappiamo come farlo in modo coerente per le gerarchie miste


questo non risolve il problema, ma almeno rende il codice di compilazione: si può cambiare nome JVM del getter con la @JvmName annotation:

interface A { 
    fun getFoo(): SomeType 
} 

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

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

Inoltre, considerare il passaggio ad un approccio più idiomatica: definire il val -property nell'interfaccia, in modo che è possibile ignorare che l'attuazione 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: Aggiunto un approccio Kotlin più idiomatico. – hotkey