接口与函数调用的Kotlin性能

时间:2016-05-06 16:52:11

标签: java android interface kotlin function-calls

在Kotlin中,因为我们可以使用函数作为变量,我倾向于用这样的函数调用替换接口:

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() {
            }
        })

    }
}

由于我对Kotlin很新,我想知道差异以及在什么情况下我应该使用函数调用vs接口,除了(显然)抽象。或者是相同的,函数调用与匿名内部类完全相同

该功能被多次调用,每次100次精确,我想知道,在性能方面,哪个更好

1 个答案:

答案 0 :(得分:4)

Kotlin中的lambda编译为匿名内部类。因此,两种情况的表现将完全相同。