【问题标题】:Android Studios: Type inference failed. The value of the type parameter T should be mentioned in input typesAndroid Studios:类型推断失败。类型参数 T 的值应该在输入类型中提到
【发布时间】:2020-06-09 18:12:29
【问题描述】:

Android Studios (Kotlin) 出错

错误:

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

fun devId(): Any {
    var str = Build.CPU_ABI
    if (Build.VERSION.SDK_INT >= 21) {
        var i = 0
        val hashSet = HashSet(listOf(arrayOf("armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64")))
        val strArr = Build.SUPPORTED_ABIS
        val length = strArr.size
        while (true) {
            if (i >= length) { break }
            val str2 = strArr[i]
            if (hashSet.contains(str2)) {
                str = str2
                break
            }
            i++
        }
    }
    return println(Build.BOARD + Build.BRAND + str + Build.DEVICE + Build.MANUFACTURER + Build.MODEL + Build.PRODUCT)
}

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    问题出在hashSet.contains(str2)。这个表达式总是错误的。因为hashSet 类型是HashSet<Array<String>>str2String 你可以传递给函数contains 只有Array<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)
    }
    

    【讨论】:

    • 我该如何处理?
    猜你喜欢
    • 2018-12-13
    • 2018-05-15
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多