Android 智能转换到';ArrayList<;对象>';在科特林是不可能的

Android 智能转换到';ArrayList<;对象>';在科特林是不可能的,android,kotlin,Android,Kotlin,我有一些类,并将它们从Java转换为Kotlin 这是Kotlin方法: 私有变量allCountriesList:列表?=无效的 val所有国家/地区:列表 得到(){ val locales=Locale.getISOCountries() val countries=ArrayList() for(地区中的国家代码){ val obj=Locale(“,国家代码) Log.i(“AMIRA2020”,obj.country+“/”+obj.displayName) if(obj.count

我有一些类,并将它们从Java转换为Kotlin

这是Kotlin方法:

私有变量allCountriesList:列表?=无效的
val所有国家/地区:列表
得到(){
val locales=Locale.getISOCountries()
val countries=ArrayList()
for(地区中的国家代码){
val obj=Locale(“,国家代码)
Log.i(“AMIRA2020”,obj.country+“/”+obj.displayName)
if(obj.country==“SP”==false&&obj.country==“ZG”==false)
countries.add(Country(obj.Country,obj.displayName,-1))
}
Collections.sort(countries){o1,o2->o1.name!!.compareTo(o2.name!!)}
allCountriesList=国家
返回allCountriesList
}
我在
return
语句中得到一个错误,即smart case是不可能的


有人能帮忙吗?

问题是
allCountriesList
是一个可为空的属性,
allCountries
必须返回一个非空值。您可能希望在返回前将
allCountriesList
设置为非空列表可以确保安全,但事实并非如此

例如,在这两行之间,另一个线程可以获取CPU时间,并将
allCountriesList
设置回
null
,这是您无法从
allCountries
的getter返回的

allCountriesList = countries
return allCountriesList
因此,解决方案是返回您知道在此范围内不为空(并且无法从其他线程访问)的列表,
国家

val allCountries: List<Country>
    get() {

        ...
        val countries = ArrayList<Country>()
        ...

        allCountriesList = countries

        return countries
    }
val所有国家/地区:列表
得到(){
...
val countries=ArrayList()
...
allCountriesList=国家
返回国
}

问题在于
allCountriesList
是一个可为空的属性,
allCountries
必须返回一个非空值。您可能希望在返回前将
allCountriesList
设置为非空列表可以确保安全,但事实并非如此

例如,在这两行之间,另一个线程可以获取CPU时间,并将
allCountriesList
设置回
null
,这是您无法从
allCountries
的getter返回的

allCountriesList = countries
return allCountriesList
因此,解决方案是返回您知道在此范围内不为空(并且无法从其他线程访问)的列表,
国家

val allCountries: List<Country>
    get() {

        ...
        val countries = ArrayList<Country>()
        ...

        allCountriesList = countries

        return countries
    }
val所有国家/地区:列表
得到(){
...
val countries=ArrayList()
...
allCountriesList=国家
返回国
}

当我删除空初始化时,它不起作用;当我使用此变量allCountriesList:List=emptyList()时,它起作用;当我删除空初始化时,它不起作用;当我使用此变量allCountriesList:List=emptyList()时,它起作用