在 Kotlin 中处理 Android 8.0 时出现错误 "Not enough information to infer parameter T"
大家好!我是一名 Kotlin 初学者,正在编写我的第一个 Android 应用。遇到了一个错误,已经困扰我两天了。我将 Android 8.0 (Oreo) 作为目标 API。
我有一个简单的函数,应该从 SharedPreferences 加载数据并以指定类型返回。这是我的代码:
```kotlin
fun getFromPrefs(key: String, default: T): T {
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
return when (default) {
is String -> prefs.getString(key, default) as T
is Int -> prefs.getInt(key, default) as T
is Boolean -> prefs.getBoolean(key, default) as T
else -> default
}
}
// 调用函数
val name: String = getFromPrefs("user_name", "default_name")
val age: Int = getFromPrefs("user_age", 0)
```
但编译器报错:"Not enough information to infer parameter T"。我明白是类型推断的问题,但不知道为什么 Kotlin 不能自动推断出来。