я про строки 17-20
# russian
m
я про строки 17-20
b
Попробуй
viewModel::address.setter
s
только нужно учитывать что будет нагенерено классов, методов да еще и со ссылкой на рефлекшн...
b
вероятно придется добавить зависимость на kotlin-reflect.jar
m
сколько? 🙂
s
на каждый вызов
::
создается анонимный класс, с, насколько помню, тремя методами
m
что-то не помню о таком синтаксисе в документации, где об этом почитать можно?
s
по 5 методов на класс
Copy code
final class MainKt$main$1 extends MutablePropertyReference0 {
   MainKt$main$1(Entry var1) {
      super(var1);
   }

   public String getName() {
      return "next";
   }

   public String getSignature() {
      return "getNext()LEntry;";
   }

   public KDeclarationContainer getOwner() {
      return Reflection.getOrCreateKotlinClass(Entry.class);
   }

   @Nullable
   public Object get() {
      return ((Entry)this.receiver).getNext();
   }

   public void set(@Nullable Object value) {
      ((Entry)this.receiver).setNext((Entry)value);
   }
}
это на каждый
instance::field
m
спасибо
но какие альтернативы есть этому?
s
синтаксис вот:
Copy code
class Entry(var next: Entry?)

fun main(args: Array<String>) {
  val e = Entry(null)
  println(e::next)
}
b
👍🏻 1
s
но какие альтернативы есть этому?
вроде бы никаких... единественно можно лямбду попробовать сократить до
{ adress = it }
1
b
но анонимных классов от этого меньше не становится
оффтоп: @moonsweel адрес инициализируется дважды
👏 1
b
А тут не сэкономишь. Анонимный класс будет создан либо для лямбды (
{ value -> viewModel.address = value }
), либо для ссылки (
viewModel::address.setter
). Одно из двух.
m
рефлексию использовать не хочется всё равно