【问题标题】:Java 8 and annotation processorJava 8 和注解处理器
【发布时间】:2019-08-01 13:43:08
【问题描述】:

根据docDefaultLifecyclerObserver 优于 LifecycleObserver,因为后者使用注解(如果我们使用 Java 8)

如果您使用 Java 8 语言,总是更喜欢它而不是注解。

谁能解释一下为什么会这样?

【问题讨论】:

    标签: android android-lifecycle androidx


    【解决方案1】:

    这就是为什么DefaultLifecyclerObserver 被声明为首选的主要原因。

    假设您实现了LifecycleObserver 接口并使用OnLifecycleEvent 注释:

    class MyLifeCycleObserver(val lifeCycle: Lifecycle) : LifecycleObserver {
      @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
       fun onCreated() {
        //...
       }
      @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
       fun onResumed() {
        //...
       }
    }
    

    您可以从上面注意到,对于每个@OnLifecycleEvent 注释,我们必须传递一个Lifecycle.Event,这迫使许多开发人员总是试图回忆要传递的内容、传递的方式以及传递事件的位置。这实际上是一种开销,需要默认接口​​ (DefaultLifecyclerObserver)。

    现在怎么样?

    class MyLifeCycleObserver : DefaultLifecycleObserver {
    
         override fun onCreate(owner: LifecycleOwner) {
             //...
         }
         override fun onResume(owner: LifecycleOwner) {
             //...
         }
     } 
    

    更干净、更好、更可靠

    为什么它是 Java 8 特有的?

    Java 8 允许开发人员使用所谓的Default MethodDefender methods 功能,允许添加新方法 一个接口,而不破坏其现有实现。

    【讨论】:

    • 为什么这个 Java 8 是特定的?
    • 为什么说是more reliable
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多