在我的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;
}
答案 0 :(得分:0)
尝试:
List<E> items = gson.create().fromJson(json, collectionType);
该异常抱怨您有一个ArrayList对象(该对象是从fromJson()
返回的),但是您试图将其强制转换为分配给E[] items
的数组。