какое решение лучше? использовать обнуляемую лямбду или передать пустую лямбду в качестве параметра по умолчанию? kotlin как-то оптимизирует пустую лямбду? или создать новый экземпляр, который ничего не делает?
class Test1(val action: () -> Unit = {})
К сожалению, я не понимаю сгенерированный байт-код. Давайте проанализируем
val test11 = Test1()
после декомпиляции дает нам
private static final Test1 test11 = new Test1((Function0)null, 1, (DefaultConstructorMarker)null);
и, наконец, когда лямбда передается примерно так
var1 = (Function0)null.INSTANCE;
edit: скрытые вопросы: как Kotlin обрабатывает пустую лямбду как значение по умолчанию?
action?.invoke()
. - person Paweł Byszewski   schedule 05.08.2016class Test1(val action: () -> Unit = {})
? - person ruX   schedule 05.08.2016action
абстрактной функцией вместо свойства. Я подозреваю, что ваш код будет чище. - person mfulton26   schedule 05.08.2016