2017-04-04 78 views
2

Kotlin可能創建一個實現某個接口的匿名類,只實現您需要的函數嗎?例如,我想創建實施AnimationListener一類有3種方法:從匿名類中的接口實現一種方法

  • onAnimationStart
  • onAnimationEnd
  • onAnimationRepeat

如果我只想使用onAnimationEnd回調,我可以做像這樣?

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

我在Java中這樣做的方式是通過創建實現接口的類,只需創建匿名類,類並重寫我需要的方法。 我希望Kotlin在這方面有一個更好,不太詳細的方法。

+0

它實現了一個接口方法,而不是覆蓋它! –

回答

6

我不認爲在這方面Kotlin和Java有什麼不同。你可以,但是,創建自己的接口具有默認無操作的方法實現你不需要:

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

然後實際的具體實施將延長AnimationEndListener並覆蓋真實必要的東西。

+0

謝謝,我會暫時將其打開,以防其他人提供不同的答案或解決方法。但現在,這似乎是要走的路 – dumazy

+2

有['AnimationListenerAdapter'](https://developer.android.com/reference/android/animation/AnimatorListenerAdapter.html),它允許執行OP要求的操作。 – azizbekian

+0

@azizbekian非常感謝,這是我可以使用的,但這只是一個例子。我在尋找一個普通的答案 – dumazy

相關問題