¿Cuál es la forma correcta de agregar un getter privado abstracto y un setter público?

Tengo una interfaz donde quiero una propiedad que se puede modificar dentro de la class, pero no en el exterior. No puedo usar val porque debe ser mutable y la palabra key var no puede tener un setter privado especificado, ya que está en una interfaz.

En Java, hubiera hecho esto:

public <T> getMyProperty(); 

Puedo usar el mismo enfoque en kotlin y simplemente escribir la function getter dirrectly, pero esto no parece un enfoque tipo kotlin. ¿Hay una mejor manera de lograr lo mismo que esto? diversión getMyProperty ()

En Kotlin, puedes override un valor val con una var , así que, creo, lo que quieres se puede express de la siguiente manera:

 interface Iface { val foo: Foo } 

 class Impl : Iface { override var foo: Foo get() = TODO() private set(value) { TODO() } } 

O puede anular el val con una propiedad con un campo de respaldo y accesadores pnetworkingeterminados:

 class ImplDefaultGetter : Iface { override var foo: Foo = someFoo private set } 

En ambos casos, la mutabilidad y la presencia de un setter privado se convierten en un detalle de implementación de las classs y no se exponen a través de la interfaz.

  • TornadoFX: el text de la label no se actualiza
  • Asignación de valores a ArrayList usando mapTo
  • "Nombre de campo BSON no válido" durante la inserción
  • 'x' no es una function al pasar parameters en Kotlin Javascript
  • Clase Derivada Parcelable en Kotlin
  • secuencias infinitas kotlin con function de iterador
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos
  • Spring Boot: Boot Run no puede agregar addResources = true
  • Al utilizar tanto publishOn como subscribeOn en un flujo, no ocurre nada
  • Recursión de Kotlin
  • No se puede resolver el símbolo kotlinOptions (en la construcción de Gradle)