null или empty lambda в качестве значения по умолчанию

какое решение лучше? использовать нулевую лямбду или передать пустой лямбда в качестве параметра по умолчанию? мог бы 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 относится к пустой лямбда как значение по умолчанию?

    Определенно более идиоматично передавать пустой лямбда, а не нуль, как значение по умолчанию для параметра лямбда.

    Декомпилятор, используемый в IntelliJ IDEA, не всегда отлично обрабатывает байт-код Kotlin, поэтому то, что вы видите на его выходе в этом случае, не отражает того, что на самом деле происходит. На самом деле пустая лямбда будет скомпилирована в одноэлементный вложенный класс, реализующий соответствующий интерфейс FunctionN с пустым телом, а экземпляр singleton будет использоваться как значение по умолчанию.

    См. Мои слайды сообщений для получения дополнительной информации о том, как параметры по умолчанию реализованы в Котлине.