java.lang.ClassCastException:无法将java.util.ArrayList强制转换为java.lang.Object []

时间:2019-04-14 06:53:52

标签: java android

在我的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;
    }

1 个答案:

答案 0 :(得分:0)

尝试:

List<E> items = gson.create().fromJson(json, collectionType);

该异常抱怨您有一个ArrayList对象(该对象是从fromJson()返回的),但是您试图将其强制转换为分配给E[] items的数组。