@foonfyrick

Syncronized(this) Почему не могу указать ключ явно??

Код ведь одинаковый, что там что там ключом является переменная instance?
// здесь я указываю this, и когда на него навожу, у меня выделяется instance

    companion object{
        @Volatile
        var instance:MUserDatabase?=null
        fun getInstance(context: Context):MUserDatabase?{
            return instance ?: synchronized(this){
                val  tempInstance = Room.databaseBuilder(
                    context,
                    MUserDatabase::class.java,
                    "database"
                ).build()
                instance = tempInstance
                return instance
            }
        }
    }

// здесь я хочу явно указать instance но подсвечивается красным

    companion object{
        @Volatile
        var instance:MUserDatabase?=null
        fun getInstance(context: Context):MUserDatabase?{
            return instance ?: synchronized(instance){
                val  tempInstance = Room.databaseBuilder(
                    context,
                    MUserDatabase::class.java,
                    "database"
                ).build()
                instance = tempInstance
                return instance
            }
        }
    }
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Kotlin
Android developer at Yandex
Нет, this в данном случае это Companion object. Нельзя синхронизоваться на нуллабельной переменной.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы