Как установить делегированное значение свойства путем отражения в котлин?

мой класс сущностей:

class User : ActiveRecord<User>() { var name by Column(String.javaClass); var id by Column(Int.javaClass); } 

теперь я хочу установить значение имени путем refelection:

  var clazz = User().javaClass var record = clazz.newInstance() var field = record.getDeclaredField(it + "$" + "delegate") field.set(record,"aa") 

то ошибка:

 entity.Column field ActiveRecord4k.User.name$delegate to java.lang.String 

как это сделать? ти!

    Если вы хотите отразить свойство так, как если бы оно было record.name = "..." , то вы можете использовать kotlin-reflect , API отражения Kotlin (см. Ссылку ).

    С помощью kotlin-reflect установка значения свойства выполняется следующим образом:

     val property = outputs::class.memberProperties.find { it.name == "name" } if (property is KMutableProperty<*>) { property.setter.call(record, "value") } 

    Если свойство делегировано, вызов будет отправлен делегату.

    Или вы можете сделать это с помощью Java-рефлексии, сначала найдя установщика для своего имущества:

     var setter = clazz.getDeclaredMethod("set" + it.capitalize()) setter.invoke(record, "aa") 

    Но по крайней мере на данный момент нет возможности перезаписать экземпляр делегирования этого свойства, потому что поле, хранящее его, name$delegate , является final .