Connect with us

Программирование

Что такое Kotlin SAM

Позвольте интерфейсам SAM сделать ваш день и ваш код лучше.

Фото аватара

Опубликовано

/

     
     

Если вы когда-нибудь писали на Kotlin раньше, вы наверняка слышали о SAM (Single Abstract Method), функциональных интерфейсах. Эта фича используется многими библиотеками, например Ktor. Таким образом, изучение того, что это такое и как его использовать, является обязательным для нас, как для разработчиков.

Основные сильные стороны Kotlin по сравнению с Java заключаются в более коротком и менее перегруженном синтаксисе. Инженеры, создававшие Kotlin, сосредотачивались на этих двух моментах. Как легко заметить, функция SAM также фокусируется на них.

В Java или Kotlin — не имеет значения, какой язык вы используете — обратные вызовы (колбеки) были головной болью разработчиков. Особенно, когда вы начинали вкладывать их друг в друга — все могло легко выйти из-под контроля. Кроме того, когда вы пытаетесь создать анонимный класс из интерфейсов, код становится слишком специфичным и трудным для чтения. И даже более, выполнение этого для интерфейсов только с одним методом/функцией требует слишком много усилий для реализации всего одной функции. Именно здесь вступает в игру фича SAM.

Без функции SAM простое использование интерфейса foo выглядит так:

Но использование SAM делает код более читаемым. Вот так:

Более того, эта фича также делает функции, использующие SAM интерфейс в качестве параметра, более читабельными. Функции становятся более похожими на использование Kotlin DSL. Посмотрите:

Чтобы создать свой собственный SAM интерфейс, все, что вам нужно сделать, это добавить ключевое слово funkeyword в самом начале, а остальное — просто волшебство. Однако вы не можете использовать SAM с интерфейсами, имеющими более одной функции. Это не должно быть для вас сюрпризом, поскольку SAM на самом деле и означает “единый абстрактный метод”.

Кроме того, интерфейсы SAM в Kotlin также поддерживают и Java, так что вы можете вызывать их из Java-кода.

Вот и все. Спасибо, что дочитали до этого места. Позвольте интерфейсам SAM сделать ваш день и ваш код лучше.

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: