@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. Нельзя синхронизоваться на нуллабельной переменной.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
24 июл. 2024, в 05:17
50000 руб./за проект
24 июл. 2024, в 01:58
40000 руб./за проект
24 июл. 2024, в 01:55
5000 руб./за проект