[英]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.