Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpBdFi 24 of 299 menu
◀ ▶

Функциональный интерфейс в Kotlin

Иногда блок кода нужно передать как значение с именованным типом. Обычный интерфейс с одним методом для этого подходит, но запись через object получается длинной.

Ключевое слово fun interface помечает интерфейс с ровно одной абстрактной операцией. Такой тип называют SAM - single abstract method:

fun interface OnTick { fun run() }

Пока блок передают явным объектом, который реализует этот метод. Компилятор проверяет тип так же строго, как у обычного интерфейса:

fun main() { val tick: OnTick = object : OnTick { override fun run() { println("tick") } } tick.run() }

Тот же интерфейс можно хранить в коллекции или передавать в функцию, которая ждет OnTick. Объект создается один раз, а вызов метода остается коротким:

fun play(action: OnTick) { action.run() } fun main() { val tick = object : OnTick { override fun run() { println("play") } } play(tick) }

Объявите fun interface OnPing с методом fire без параметров. Создайте объект через object : OnPing, который выводит "ping", и вызовите fire.

Напишите функцию, которая принимает OnPing и один раз вызывает его метод. Передайте свой объект и проверьте вывод в main.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить