繁体   English   中英

Java 8和注释处理器

[英]Java 8 and annotation processor

根据文档,LifecycleObserver DefaultLifecyclerObserver优先,因为后者使用注释(如果我们使用的是Java 8)

如果您使用Java 8语言,请始终将其优先于注释。

有人可以解释为什么会这样吗?

这是将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允许开发人员使用所谓的“ 默认方法”或“ 防御者方法”功能,该功能允许在不破坏现有实现的情况下向接口添加新方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM