¿Hay alguna manera de anular una propiedad setter en extender class en Kotlin?

class A { var selectedColor: Int get() = selectedColor set(selectedColor) { this.selectedColor = selectedColor doSomething() } } class B : A { override var selectedColor: Int get() = selectedColor set(selectedColor) { this.selectedColor = selectedColor doSomethingElse() } } 

la anulación de palabra key muestra un error que indica que 'selectedColor' es final y no se puede anular. ¿Hay algo que este olvidando?

Para hacerlo, debe marcar tanto la class A como la propiedad como open ( son final por defecto ):

Además, sus getters se escriben como get() = selectedColor y los setters tienen this.selectedColor = selectedColor assignments, que en realidad son ambas llamadas recursivas al mismo acceso, lo que dará lugar a StackOverflowError . Para acceder al valor del campo de respaldo , use get() = field y field = ... lugar.

 open class A { open var selectedColor: Int = someDefaultValue get() = field set(value) { field = value doSomething() } } 

Luego puede override la propiedad, y si desea que el comportamiento del getter no se modifique, puede llamar a super.selectedColor :

 class B : A() { override var selectedColor: Int = someDefaultValue get() = super.selectedColor set(value) { field = value doSomethingElse() } } 

Si desea llamar al colocador de la superclass, use super.selectedColor = value lugar de field = value .

Necesita configurar su var selectedColor para abrir. Creo que esta bien

Me gusta esto :

 class A { open var selectedColor: Int get() = selectedColor set(selectedColor) { this.selectedColor = selectedColor doSomething() } } 
  • Errores de estudio de Android Kotlin de data binding
  • Función genérica con matriz 2D genérica
  • ¿Cómo usar @DbEnumValue con Ebean en Kotlin?
  • Vista de text de flujo alnetworkingedor de la image
  • Kotlin: No se puede usar GenericTypeIndicator para llamar al getValue de Firebase Database
  • ¿Cómo puedo get mis testings JUnit para comstackr y ejecutar en mi proyecto Kotlin + Gradle?
  • Cómo convertir const char * a KString en Kotlin / Native?
  • Función de logging de extensión Kotlin con logback (slf4j)
  • Diferencia entre una class y un object en Kotlin
  • La altura de la vista es 0 bajo ciertas condiciones al hacer la transición entre Actividades
  • Singleton con parámetro en Kotlin