2016-05-06 217 views
1

在科特林,我們可以使用函數作爲變量,我傾向於功能來代替接口調用是這樣的:科特林性能

class A { 

    private var listener: AA? = null 
    var callThis: (() -> Unit) ? = null) 

    fun somethingHere() { 
     callThis?.invoke() 
     listener?.callThis2() 
    } 

    fun attachListener(listener: AA) { 
     this.listener = listener 
    } 

    interface AA { 
     fun callThis2() 
    } 
} 

class B { 
    init { 
     val objectA = A() 
     objectA.callThis = {} 
     objectA.attachListener(object : A.AA { 
      override fun callThis2() { 
      } 
     }) 

    } 
} 

因爲我是很新,科特林,我會喜歡瞭解不同之處和我應該在哪些場景中使用函數調用vs接口,除了(明顯)抽象。或者它是一樣的,並且函數調用與匿名內部類完全一樣

該函數被調用很多次,每次精確地調用100次,並且我想知道,就性能而言,哪個更好

+0

你能重新格式化代碼嗎?在目前的狀態下,它很難閱讀。謝謝 – voddan

回答

4

Kotlin中的lambda被編譯爲匿名內部類。因此,這兩種情況的表現將完全相同。