Реализация интерфейса возврата с помощью Kotlin и лямбда

У меня есть этот простой интерфейс:

interface ValidationBehavior { fun onValidated() } 

Этот интерфейс используется в одной функции класса:

 private enum class BehaviorEnum { IDLE, NAVIGATEBACK } private fun getBehavior(payloadBehavior: String) : ValidationBehavior { when(BehaviorEnum.valueOf(payloadBehavior)) { BehaviorEnum.IDLE -> return object: ValidationBehavior { override fun onValidated() { // do some stuff } } } } 

Мой вопрос: есть ли способ упростить оператор return с помощью лямбда? Я пробую кое-что вроде этого, но это не работает:

 return ValidationBehavior{ () -> //do some stuff } 

Нет, интерфейсы, написанные в Kotlin, не могут быть созданы с помощью лямбда, что работает только для интерфейсов, написанных на Java. Если вы хотите использовать лямбда в Котлине, используйте функциональный тип, например, в вашем случае () -> Unit вместо ValidationBehavior .

Кроме того, напишите метод, который использует функциональный тип и завершает его в ValidationBehavior :

 interface ValidationBehavior { companion object { inline operator fun invoke(fn: () -> Unit) = object: ValidationBehavior { override fun onValidated() = fn() } } fun onValidated() } private fun getBehavior(payloadBehavior: String) : ValidationBehavior { when(BehaviorEnum.valueOf(payloadBehavior)) { BehaviorEnum.IDLE -> return ValidationBehavior { /* do stuff */ } } }