Выполнение команды Интерфейс 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, я хотел бы знать различия и в каких сценариях я должен использовать вызовы функций против интерфейсов, за исключением (явно) абстракции. Или это то же самое, и вызов функции выполняет точно так же, как анонимные внутренние классы

Функция называется много раз, каждый 100s точно, и я хотел бы знать, с точки зрения производительности, что лучше

Лямбда в Котлине компилируется в анонимный внутренний класс. Поэтому производительность двух сценариев будет точно такой же.