Программирование
Что такое 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 сделать ваш день и ваш код лучше.


-
Рекламные сети1 месяц назад
Кейс SB-Games: как увеличить APRU 18 приложений на 40%
-
Аналитика магазинов1 месяц назад
Глобальный охват китайских приложений: исследование прибыльных рынков и вертикалей
-
Интегрированные среды разработки1 месяц назад
Анализ производительности для ускорения сборок в Xcode
-
Статьи1 месяц назад
Что такое Core ML