Android Studio 3.4
Kotlin 1.3.10
У меня есть следующий метод, который вызывает findPreferences, чтобы вернуть правильное значение, которое хранится в общих настройках.Однако, поскольку я использую reified, findPreferences выдает мне сообщение об ошибке: Невозможно использовать тип T в качестве параметра reified.
Есть ли в любом случае, я могу заставить это работать?
fun <T: Any> getValue(key: String, defaultValue: T?): T {
return findPreferences(key, defaultValue)
}
Этометод, который будет возвращать значение на основе ключа
@Suppress("unchecked_cast")
inline fun <reified T: Any> findPreferences(key: String, defaultValue: T?): T {
with(sharedPreferences) {
val result: Any = when(defaultValue) {
is Boolean -> getBoolean(key, default)
is Int -> getInt(key, defaultValue)
is Long -> getLong(key, defaultValue)
is Float -> getFloat(key, defaultValue)
is String -> getString(key, defaultValue)
else -> {
throw UnsupportedOperationException("Cannot find preference casting error")
}
}
return result as T
}
}