Проблема заключается в том, что allCountriesList
является обнуляемым свойством, а allCountries
должно возвращать ненулевое значение. Вы можете ожидать, что установка allCountriesList
в ненулевой список List перед возвратом делает это безопасным, но это не так.
Например, между этими двумя строками другой поток может получить процессорное время и установить для allCountriesList
значение null
, которое вы не можете вернуть из получателя allCountries
.
allCountriesList = countries
return allCountriesList
Таким образом, решение состоит в том, чтобы вернуть список, который, как вы знаете, является ненулевым в этой области (и недоступен из других потоков), countries
:
val allCountries: List<Country>
get() {
...
val countries = ArrayList<Country>()
...
allCountriesList = countries
return countries
}