Программирование
Что такое 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 месяц назад
Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
-
Разработка1 месяц назад
Поваренная книга SwiftUI: лучшие практики управления состояниями в SwiftUI
-
Разработка1 месяц назад
Чистка Android-проекта для уменьшения размера APK, ускорения сборки и улучшения опыта разработки
-
Разработка1 месяц назад
Прекратите спорить в Code Review — начните внедрять с правилами линтера