Может ли kotlin интерфейс кэшировать значение?

Мне очень нравится использование стандартных реализаций для интерфейсов в Котлине, особенно для обычных шаблонов, таких как Observable. Вот мой интерфейс,

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) } } } 

Интерфейс относится к списку observers , но вызов get() возвращает каждый раз новый LinkedList() . Как я могу кэшировать значение observers чтобы он был создан только один раз? Я пробовал использовать kotlin-lazy , но либо не могу получить синтаксис правильно, либо он не предназначен для интерфейсов. Моя IDE жалуется: «Делегированные свойства не допускаются в интерфейсах».

ОБНОВИТЬ

Основываясь на ответе Yoav, я изменил свой интерфейс на

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

А затем в классе реализации,

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

Какие-нибудь советы, чтобы сделать это более кратким?

Согласно документам Котлина:

Интерфейсы в Kotlin очень похожи на Java 8. Они могут содержать декларации абстрактных методов, а также реализации методов. Что отличает их от абстрактных классов, так это то, что интерфейсы не могут сохранять состояние.

Интерфейс не может содержать какое-либо состояние, поскольку они полностью абстрактны. Возможно, вы должны использовать abstract class , чтобы кэшировать значения?

См. Этот вопрос для получения дополнительной информации о причинах отсутствия интерфейсов.

Интерфейс – это контракт, определяющий, что обещает выполнить его разработчик. Ему не нужно указывать состояние, потому что состояние является деталью реализации и служит только для ограничения исполнителей в том, как выполняется этот контракт. Если вы хотите указать состояние, вы можете захотеть переосмыслить использование интерфейсов и вместо этого рассмотреть абстрактные базовые классы.