Kotlin Android Studio:类型推断失败。输入类型中应提及类型参数T的值

Kotlin Android Studio:类型推断失败。输入类型中应提及类型参数T的值,kotlin,Kotlin,Android Studio(Kotlin)出现错误 错误: e:类型推断失败。类型参数T的值应该在输入类型(参数类型、接收器类型或预期类型)中提及。尝试显式地指定它 fun devId():任何{ var str=Build.CPU\u ABI 如果(Build.VERSION.SDK_INT>=21){ 变量i=0 val hashSet=hashSet(列表of(数组(“armeabi”、“armeabi-v7a”、“arm64-v8a”、“x86”、“x86_64”、“mips”、“mi

Android Studio(Kotlin)出现错误

错误:

e:类型推断失败。类型参数T的值应该在输入类型(参数类型、接收器类型或预期类型)中提及。尝试显式地指定它

fun devId():任何{
var str=Build.CPU\u ABI
如果(Build.VERSION.SDK_INT>=21){
变量i=0
val hashSet=hashSet(列表of(数组(“armeabi”、“armeabi-v7a”、“arm64-v8a”、“x86”、“x86_64”、“mips”、“mips64”))
val strArr=Build.SUPPORTED_ABIS
val长度=strArr.size
while(true){
如果(i>=length){break}
val str2=strArr[i]
if(hashSet.contains(str2)){
str=str2
打破
}
我++
}
}
返回println(Build.BOARD+Build.BRAND+str+Build.DEVICE+Build.MANUFACTURER+Build.MODEL+Build.PRODUCT)
}

问题出在
hashSet.contains(str2)
中。这个表达总是错误的。因为
hashSet
类型是
hashSet
str2
String
您可以传递到函数
包含
数组

看起来您可以将代码重写为:

fun devId() {
    val str = if (Build.VERSION.SDK_INT >= 21) {
        Build.SUPPORTED_ABIS
            .firstOrNull { it in setOf("armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64") }
            ?: Build.CPU_ABI
    } else Build.CPU_ABI

    return println(Build.BOARD + Build.BRAND + str + Build.DEVICE + Build.MANUFACTURER + Build.MODEL + Build.PRODUCT)
}

问题出在hashSet.contains(str2)
中。这个表达总是错误的。因为
hashSet
类型是
hashSet
str2
String
您可以传递到函数
包含
数组

看起来您可以将代码重写为:

fun devId() {
    val str = if (Build.VERSION.SDK_INT >= 21) {
        Build.SUPPORTED_ABIS
            .firstOrNull { it in setOf("armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64") }
            ?: Build.CPU_ABI
    } else Build.CPU_ABI

    return println(Build.BOARD + Build.BRAND + str + Build.DEVICE + Build.MANUFACTURER + Build.MODEL + Build.PRODUCT)
}

我该怎么做?我该怎么做?