> Как реализовать синглтон в Kotlin (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Бел Интегратор
Стек: Kotlin, Android
> Пример ответа
В Kotlin синглтон реализуется наиболее просто через ключевое слово object. Компилятор сам гарантирует потокобезопасность и ленивую инициализацию при первом обращении:
object MySingleton { fun doSomething() { println("Singleton method called") } }
Для Android-разработки часто требуется синглтон с параметрами (например, Context). В таких случаях используется companion object с блоком synchronized:
class MySingleton private constructor(private val context: Context) { companion object { @Volatile private var instance: MySingleton? = null fun getInstance(context: Context): MySingleton { return instance ?: synchronized(this) { instance ?: MySingleton(context.applicationContext).also { instance = it } } } } }
Также можно применить делегат lazy для потокобезопасной инициализации без явной синхронизации:
class MySingleton private constructor() { companion object { val instance: MySingleton by lazy { MySingleton() } } }
Выбор зависит от потребностей: object - для простых случаев, companion object с синхронизацией - для гибкости с параметрами.
> Похожие задачи по mobile
Какая упорядоченность у Map в Kotlin и существуют ли реализации, сохраняющие порядок элементов
Как создать переменную в дата классе Kotlin, которая не участвует в hashCode и equals
Можно ли изменить переменную типа val в Kotlin
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью