大家好,我在KotlinAndroid中有此代码,我尝试将JSON字符串解析为数据类,但数据未知,我的意思是数据类是genric类型T
class JsonFeatureFlag<T>(
key: String,
@StringRes nameResId: Int,
category: DevOptionCategory,
val defaultValue: T
): FeatureFlagV2<T>(key, nameResId, category) {
.....
override fun getValue(): T {
val json = FirebaseRemoteConfig.getInstance().getString(key)
return try {
Gson().fromJson(json, object: TypeToken<T>(){}.type)
} catch (e: Exception) {
reportInvalidJson(json)
defaultValue
}
}
....
}
我得到这个错误:java.lang.ClassCastException:无法将java.util.LinkedHashMap强制转换为X
虽然我理解TypeToken应该用于泛型,但有些地方不起作用。
1条答案
按热度按时间eqzww0vc1#
为了解决这个问题,我提供了一个类名,即className:类虽然我使用了genric,但是当有人想使用我的API并调用getValue时,类型是已知的,他可以为get value方法提供类名。