https://kotlinlang.org logo
#russian
Title
# russian
m

moonsweel

11/16/2017, 12:01 PM
я про строки 17-20
b

bashor

11/16/2017, 12:08 PM
Попробуй
viewModel::address.setter
s

snrostov

11/16/2017, 12:08 PM
только нужно учитывать что будет нагенерено классов, методов да еще и со ссылкой на рефлекшн...
b

bashor

11/16/2017, 12:09 PM
вероятно придется добавить зависимость на kotlin-reflect.jar
m

moonsweel

11/16/2017, 12:09 PM
сколько? 🙂
s

snrostov

11/16/2017, 12:10 PM
на каждый вызов
::
создается анонимный класс, с, насколько помню, тремя методами
m

moonsweel

11/16/2017, 12:11 PM
что-то не помню о таком синтаксисе в документации, где об этом почитать можно?
s

snrostov

11/16/2017, 12:12 PM
по 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

moonsweel

11/16/2017, 12:13 PM
спасибо
но какие альтернативы есть этому?
s

snrostov

11/16/2017, 12:13 PM
синтаксис вот:
Copy code
class Entry(var next: Entry?)

fun main(args: Array<String>) {
  val e = Entry(null)
  println(e::next)
}
b

bashor

11/16/2017, 12:15 PM
👍🏻 1
s

snrostov

11/16/2017, 12:16 PM
но какие альтернативы есть этому?
вроде бы никаких... единественно можно лямбду попробовать сократить до
{ adress = it }
1
b

bashor

11/16/2017, 12:20 PM
но анонимных классов от этого меньше не становится
оффтоп: @moonsweel адрес инициализируется дважды
👏 1
b

beholder

11/16/2017, 6:16 PM
А тут не сэкономишь. Анонимный класс будет создан либо для лямбды (
{ value -> viewModel.address = value }
), либо для ссылки (
viewModel::address.setter
). Одно из двух.
m

moonsweel

11/20/2017, 8:29 AM
рефлексию использовать не хочется всё равно
4 Views