> Можно ли создать 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 для внедрения зависимостей, что решает проблему параметризации более гибко.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью