接口与函数调用的 Kotlin 性能
Kotlin performance of Interface vs Function Invocation
在 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 的新手,我想知道区别以及在什么情况下我应该使用函数调用与接口,除了(显然)抽象。还是一样,函数调用做的和anonymous inner完全一样类
这个函数被调用了很多次,每100秒一次,我想知道,在性能方面,哪个更好
Kotlin 中的 lambda 被编译为匿名内部 class。因此,两种场景下的表现会完全一样。
在 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 的新手,我想知道区别以及在什么情况下我应该使用函数调用与接口,除了(显然)抽象。还是一样,函数调用做的和anonymous inner完全一样类
这个函数被调用了很多次,每100秒一次,我想知道,在性能方面,哪个更好
Kotlin 中的 lambda 被编译为匿名内部 class。因此,两种场景下的表现会完全一样。