> Можно ли создать Singleton с параметризованным конструктором в Kotlin (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Ozon
Стек: Kotlin, Android
> Пример ответа
Да, создать Singleton с параметризованным конструктором в Kotlin можно, но стандартный object не подходит, так как он не позволяет передавать параметры. Наиболее распространённый способ - использовать companion object с ленивой инициализацией и синхронизацией для потокобезопасности. Пример:
class MySingleton private constructor(private val param: String) { companion object { @Volatile private var instance: MySingleton? = null fun getInstance(param: String): MySingleton { return instance ?: synchronized(this) { instance ?: MySingleton(param).also { instance = it } } } } }
Использование: val singleton = MySingleton.getInstance("value"). Этот подход гарантирует, что экземпляр создаётся только один раз с переданным параметром. Для Android-разработки также можно использовать Dagger/Hilt для внедрения зависимостей, что решает проблему параметризации более гибко.
> Похожие задачи по mobile
Что такое crossinline в Kotlin и зачем он нужен
Есть ли проблемы при передаче массива вместо списка в дата класс Kotlin
Какие виды скоупов существуют в Kotlin Coroutines
Как реализовать debounce для поиска с корутинами в Kotlin
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью