我有一个从持久性加载信息的函数,我只是以一种非常简单的方式告诉它的类型。该类称为=IF(COUNTIFS($B$3:$B$13,E3,$C$3:$C$13,"")>0,"",MIN(IF($B$3:$B$13=E3,$C$3:$C$13)))
,因此它是一个真正的生活问题解决者:
SharedPreferencesHelper.kt
加载,例如,我只是 fun <T> loadList(context: Context, fileName: String, key: String, defValue: ArrayList<T>) : ArrayList<T> {
val gson = MyGsonDependency.getInstance()
val json = getWithFileName(context, fileName).getString(key, gson.toJson(defValue))
return gson.fromJson(json, object : TypeToken<ArrayList<T>>() {}.type)
}
:
ArrayList<String>
我发现的问题是,当我运行Proguard并模糊我的代码时,每当我调用 SharedPreferencesHelper.loadList<String>(
context,
FILE_NAME,
KEY,
ArrayList())
时,我都会遇到异常:
object : TypeToken<ArrayList<T>>() {}.type
我找到was here的唯一解决方案,但它意味着提供Caused by: java.lang.AssertionError: illegal type variable reference
at libcore.reflect.TypeVariableImpl.resolve(TypeVariableImpl.java:111)
at libcore.reflect.TypeVariableImpl.getGenericDeclaration(TypeVariableImpl.java:125)
at libcore.reflect.TypeVariableImpl.hashCode(TypeVariableImpl.java:47)
at java.util.Arrays.hashCode(Arrays.java:4074)
at com.google.gson.internal.$Gson$Types$ParameterizedTypeImpl.hashCode(Unknown Source:2)
at com.google.gson.reflect.TypeToken.<init>(Unknown Source:23)
作为参数。
我认为这是一个潜在的问题,原因有两个:
我的问题是,还有其他方法可以解决这个问题吗?