¿Puede una interfaz de kotlin almacenar en caching un valor?

Realmente me gusta usar implementaciones pnetworkingeterminadas para interfaces en Kotlin, especialmente para patrones comunes como Observable. Aquí está mi interfaz,

interface Observable<T>{ // How do I cache this? val observers: MutableList<Observer<T>> get() = LinkedList<>() fun addObserver(o:Observer<T>){ observers.add(o) } fun removeObserver(o:Observer<T>){ observers.remove(o) } fun notifyObservers(u:T){ for (o in observers){ o.update(u) } } } 

La interfaz hace reference a una list de observers , pero la llamada get() devuelve una nueva LinkedList() cada vez. ¿Cómo puedo almacenar en caching el valor de los observers para que solo se cree una vez? He intentado usar kotlin-lazy , pero o no puedo get la syntax correcta, o no es para interfaces. Mi IDE se queja de que "las properties delegadas no están permitidas en las interfaces".

ACTUALIZAR

Basado en la respuesta de Yoav, he cambiado mi interfaz a

 interface Observable<T>{ val observers: MutableList<Observer<T>> } 

Y luego en la class de implementación,

 class MyObservable : Observable<String> private val _observers = LinkedList<Observer<String>>() override val observers: MutableList<Observer<String>> get() = _observers 

¿Algún consejo para hacer esto más breve?

De acuerdo con los documentos de Kotlin:

Las interfaces en Kotlin son muy similares a Java 8. Pueden contener declaraciones de methods abstractos, así como implementaciones de methods. Lo que los hace diferentes de las classs abstractas es que las interfaces no pueden almacenar el estado.

La interfaz no puede contener ningún estado, ya que son completamente abstractos. Tal vez deberías usar una abstract class para almacenar en caching los valores?

Consulte esta pregunta para get más información sobre el motivo por el que las interfaces son apátridas.

Una interfaz es un contrato que especifica lo que su implementador promete ser capaz de hacer. No es necesario especificar el estado porque el estado es un detalle de implementación y solo sirve para restringir a los implementadores en la forma en que se cumple este contrato. Si desea especificar el estado, puede replantearse el uso de las interfaces y, en su lugar, examinar las classs base abstractas.

  • Fusionar datos de diferentes Observables y elegir diferentes estrategias de búsqueda, según la disponibilidad de datos
  • RxJava Valor pnetworkingeterminado para throttleFirst
  • Propiedad de Kotlin observable