Android 尝试从挂起的函数返回ArrayList时Kotlin协同例程类型不匹配

Android 尝试从挂起的函数返回ArrayList时Kotlin协同例程类型不匹配,android,kotlin,kotlin-coroutines,Android,Kotlin,Kotlin Coroutines,我有一个挂起的方法,它将返回ArrayList。但是,在尝试这样做时,IDE会突出显示协同路由范围内的一个类型不匹配错误 我的方法- private suspend fun dbsearchHelper(query: String): ArrayList<String> { return withContext(Dispatchers.Default) { if (query.length > 3) { return@withC

我有一个挂起的方法,它将返回ArrayList。但是,在尝试这样做时,IDE会突出显示协同路由范围内的一个类型不匹配错误

我的方法-

private suspend fun dbsearchHelper(query: String): ArrayList<String> {

    return withContext(Dispatchers.Default) {
        if (query.length > 3) {
            return@withContext SupportedPackagesManager.findStoreByName(query)
        }
    }
}
dbsearchHelper(查询:字符串):ArrayList{
返回withContext(Dispatchers.Default){
如果(query.length>3){
return@withContextSupportedPackageManager.findStoreByName(查询)
}
}
}
错误-

Type interference failed. Expected type mismatch:
required: kotlin.collections.ArrayList<String>
found: Any!
类型干扰失败。预期类型不匹配:
必需:kotlin.collections.ArrayList
发现:任何!
findStoreByName
是一种Java方法


我做错了什么?

您需要有一个else分支,以便Kotlin能够明确知道您要返回什么


在您的例子中,Kotlin将withContext的返回类型设置为Any,因为if(query.length)这是因为您的withContext中没有else选项。在这种情况下,您的withContext返回单位(when query.length@the_dani Thank)。错误完全不是自解释的。