何时在Kotlin使用房产代表团?

时间:2018-06-05 20:26:01

标签: android kotlin

Lisa Wray在https://youtu.be/0cjr4K0tqs4?t=493的某个时候看到了这个精彩的演讲,这激发了我为BindActivity(layoutId)BindFragmentBindViewGroup等所有ViewBinding创建不同的Property委托。 。 我的同事为Activity.bind(layoutId)View.bind()ViewGroup.bind()等创建了相同的扩展功能,这让我想知道哪个应该优先于此。我尝试反编译kotlin字节代码并且它:

  1. Property Delegation将创建一个新对象,如private final BindActivity binding$delegate = new BindActivity(2131361819);
  2. 似乎正在使用Reflection,类似以下内容来初始化KProperty

    static final KProperty[] $$delegatedProperties = new KProperty[]{(KProperty)Reflection.property1(new PropertyReference1Impl(Reflection.getOrCreateKotlinClass(MainActivity.class), "binding", "getBinding()Lcom/abcd/package/databinding/ActivityMainBinding;")), … another lazy delegated property};

  3. (ActivityMainBinding)this.binding$delegate.getValue((Activity)this, $$delegatedProperties[0])

    问题1:如果属性委派使用反射,那么使用它们的用例是什么?

    问题2:另外,kotlin的Reflection类似乎正在使用一些反射工厂kotlin.reflect.jvm.internal.ReflectionFactoryImpl,所以它是否意味着kotlin中的反射可能不像java中那么慢?

0 个答案:

没有答案