java - java.lang.ClassCastException:java.util.ArrayList 无法转换为 java.lang.Object[]
问题描述
在我的 android 项目中,我想创建一个通用类来将所有类型的实体存储在 sharedPreferences 中,但给出错误:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Object[]
这是我的代码:
public ArrayList<E> getItems(Context context) {
android.content.SharedPreferences settings;
List<E> objects ;
settings = context.getSharedPreferences(PREF_NAME,
Context.MODE_PRIVATE);
if (settings.contains(ITEM_NAME)) {
String json = settings.getString(ITEM_NAME, null);
GsonBuilder gson = new GsonBuilder();
Type collectionType = new TypeToken<List<E>>(){}.getType();
E[] items = gson.create().fromJson(json,
collectionType); // in this line occurs error
objects = new ArrayList<E>(Arrays.asList(items));
} else
return null;
return (ArrayList<E>) objects;
}
解决方案
尝试:
List<E> items = gson.create().fromJson(json, collectionType);
该异常抱怨您有一个 ArrayList 对象(从 中返回fromJson()
),但您尝试将其强制转换为具有分配给E[] items
.
推荐阅读
- c++ - 如何写入 wstring 数组中的特定位置?
- apache-spark - 只有 2 台计算机的集群上的 Apache spark
- angular - 即使导出了 Ionic 3,TypeScript 也找不到名称“ClassName”
- python-3.x - 与 `os.system` 语句混合时,`print` 函数在 Python 中不起作用
- php - htmlspecialchars() 期望参数 1 是字符串 (Laravel 5.7.1)
- react-native - 在 react native 中使用 native-base 构建的组件禁用一行?
- python - Keras ImageDataGenerator:为什么我的 CNN 的输出反转了?
- django - 由于无 ID,删除内联项目失败
- json - 如何使用 ARM 模板同时创建多个警报
- adapter - 有什么方法可以解析位图被屏蔽或没有任何位图的 ISO8583 消息?