I'm currently watching this video from the Google I/O 2017 and came across the by
feature of Kotlin.
There is the following example to avoid to implement every single method of an interface when you actually care of only one of them.
With by
implementation (from the video):
class MyListener : TransitionListener by EmptyTransitionListener {
override fun onTransitionStart(transition: Transition) {
}
}
object EmptyTransitionListener : TransitionListener {
override fun onTransitionEnd(transition: Transition) {}
override fun onTransitionResume(transition: Transition) {}
override fun onTransitionPause(transition: Transition) {}
override fun onTransitionCancel(transition: Transition) {}
override fun onTransitionStart(transition: Transition) {}
}
window.sharedElementEnterTransition.addListener(MyListener())
Without by
implementation (as I'm used to do):
open class EmptyTransitionListener : TransitionListener {
override fun onTransitionEnd(transition: Transition) {}
override fun onTransitionResume(transition: Transition) {}
override fun onTransitionPause(transition: Transition) {}
override fun onTransitionCancel(transition: Transition) {}
override fun onTransitionStart(transition: Transition) {}
}
window.sharedElementEnterTransition.addListener(object: EmptyTransitionListener() {
override fun onTransitionStart(transition: Transition) {
}
})
What are the advantages of one over the other?