2017-04-04 26 views
2

Kotlinでは、特定のインターフェイスを実装する匿名クラスを作成し、必要な機能のみを実装することは可能ですか? 、私は唯一のonAnimationEndコールバックを使用する場合は匿名クラスのインターフェイスから1つのメソッドしか実装しない

  • onAnimationStart

onAnimationRepeat

  • onAnimationEnd
  • 私はちょうど行うことができます。たとえば、私は3つの方法がありますAnimationListenerを実装するクラスを作成したいですこのようなもの?

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

    私はJavaでこれをやった方法は、単にそのクラスの匿名クラスを作成し、私は必要なメソッドをオーバーライドし、インターフェイスを実装するクラスを作成することによってでした。 私は、Kotlinがこれに対してより良い、あまり控えめなアプローチを望んでいました。

  • +0

    これはインターフェイスメソッドを実装しており、オーバーライドしていません! –

    答えて

    6

    この点については、Javaとは異なるKotlinには何もありません。あなたは、しかし、あなたが必要としない方法のノーオペレーションの実装をデフォルトの持つ独自のインターフェイスを作成することができます

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

    そして、実際の具体的な実装はAnimationEndListenerを拡張し、必要なものだけ上書きします。

    +0

    他の人が別の答えや回避策を提供する場合に備えて、私はこれを今のところ開いたままにしておきます。しかし、今のところ、これは道のりだと思われる – dumazy

    +2

    OPが求めるものを行うことを可能にする['AnimationListenerAdapter'](https://developer.android.com/reference/android/animation/AnimatorListenerAdapter.html)があります。 – azizbekian

    +0

    @azizbekianこれはありがとう、これは私が使用できるものですが、これは単なる例です。私は一般的な答え – dumazy

    関連する問題