从匿名类的接口实现只有一个方法

Kotlin有可能创建一个实现某个接口的匿名类,只实现你需要的功能吗? 例如,我想创建一个实现AnimationListener的类,它有3个方法:

  • onAnimationStart
  • onAnimationEnd
  • onAnimationRepeat

如果我只想使用onAnimationEnd回调,我可以做这样的事情吗?

 object : AnimationListener { override fun onAnimationEnd() { //my implementation } } 

我在Java中这样做的方式是创建一个实现接口的类,只需创建该类的匿名类并覆盖我需要的方法。 我希望Kotlin有一个更好的,不太详细的方法。

我不认为在这方面Kotlin和Java有什么不同。 但是,您可以创建自己的接口,该接口具有您不需要的方法的默认无操作实现:

 interface AnimationEndListener : AnimationListener { fun onAnimationStart() {} fun onAnimationRepeat() {} } 

然后,实际的具体实现将扩展AnimationEndListener并仅覆盖需要的内容。