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

rrader

01/26/2018, 9:25 AM
https://try.kotlinlang.org/#/UserProjects/c2f2649cv89c28n95n3ftmlo7e/c523v15u87cos392j481htpjbn Используется ли reflection для
User::firstName.name
или это во время компиляции заменяется?
s

snrostov

01/26/2018, 9:32 AM
рефлекшн не используется, но на каждый
::
генерируется ява класс, который внутри себя содержит константу с именем проперти
если речь про js, то генеруется вот такое:
Copy code
getPropertyCallableRef('firstName', 1, function ($receiver) {
      return $receiver.firstName;
    }).callableName
но, насколько я понимаю, ничто не мешает в будущем написать оптимизацию которая будет подставлять константу без промежуточного объекта...
Я соврал про jvm 🙂 Проверил последней версией, подставляется сразу константа
т.е. генерируется вот такое:
Copy code
public final class TestKt {
   public static final void main(@NotNull String[] args) {
      Intrinsics.checkParameterIsNotNull(args, "args");
      String var1 = "firstName";
      System.out.println(var1);
   }
}
r

rrader

01/26/2018, 12:32 PM
спасибо 👍
3 Views