TestProxy(var data: Test): Test by data
class TestData(override val name: String): Test
fun main(args: Array<String>) {
val testProxy = TestProxy(TestData("old"))
System.out.println(testProxy.name) // Выводит "old"
testProxy.data = TestData("new")
System.out.println(testProxy.name) // Снова выводит "old", а хочется "new"
}
Как сделать так, чтобы после изменения поля data в TestProxy делегирование происходило к новому значению?
Зачем TesrData overide property деоает
Нада посмотреть что в итоге генерится# знакомы с джава ?
Напрямую никак. У вас делегат связывается с объектом TestProxy на вызове конструктора по параметру конструктора, а не по полю. Соответственно, когда поле меняется, связь прокси с делегатом не обновляется.
Блин я сразу не увидел
тьфу, ты ту тсам проперти объявляешь
Обсуждают сегодня