Kotlin Android Studio:类型推断失败。输入类型中应提及类型参数T的值
Android Studio(Kotlin)出现错误 错误: e:类型推断失败。类型参数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
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)
}
我该怎么做?我该怎么做?