Если глобальное свойство определено как private var raceLoadJob: Job? = null
, то Kotlin попросит вас сделать что-то подобное в вашем методе
if (raceLoadJob != null){
if (raceLoadJob!!.isActive) return // null assertation
}
Kotlin запросит диссертацию, потому что значение raceLoadJob можно изменить.Первое, о чем я подумал, это многопоточность.
Так что вы можете изменить код на
raceLoadJob?.let {
if (it.isActive) return
}
Но если вы декомпилируете эту часть кода, вы увидите
Job var10000 = this.raceLoadJob;
if (this.raceLoadJob != null) {
Job var1 = var10000;
if (var1.isActive()) {
return;
}
}
Вы можете видеть, что это условие this.raceLoadJob != null
, но не var10000 != null
.Это означает, что в теории этот код может завершиться сбоем из-за присвоения значения raceLoadJob
, но var10000 равно null
.
Это проблема или у меня ошибка в моих рассуждениях?