在匿名类

时间:2017-04-04 07:48:06

标签: java kotlin

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

  • onAnimationStart
  • onAnimationEnd
  • onAnimationRepeat

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

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

我在Java中完成此操作的方法是创建一个实现接口的类,只需创建该类的匿名类并覆盖我需要的方法。 我希望Kotlin对此有一个更好,更简洁的方法。

1 个答案:

答案 0 :(得分:7)

我不希望Kotlin在这方面有任何与Java不同的东西。但是,您可以创建自己的界面,这些界面具有您不需要的默认的无操作方法:

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

然后实际的具体实施将扩展AnimationEndListener并仅覆盖所需的内容。