android - 转换为 ArrayList<?在 onSaveInstanceState 中保存 List 时扩展 Parcelable>

标签 android list arraylist parcelable onsaveinstancestate

我找不到答案:

我想在 onSaveInstanceState 中保存一个 Parcelable ArrayList,但是当我这样做时,它不接受声明为 List 的 ArrayList:

outState.putParcelableArrayList(KEY_QUESTION_LIST, questionList);

所以我有两个选择:要么将 List 声明为 ArrayList,要么将其转换为 Parcelable ArrayList,如下所示:

outState.putParcelableArrayList(KEY_QUESTION_LIST, (ArrayList<? extends Parcelable>) questionList);

并将其声明为列表:

private List<Question> questionList;

在网上我只看到第一种方法,所以我想知道第二种方法是否有任何缺点?

最佳答案

假设您的列表是这样声明的:

List<MyObject> list = new ArrayList<>();

如果您想稍后编写(ArrayList)列表,没有问题。但是,我认为总体而言,与简单地将列表声明为 ArrayList 相比,这是一个更糟糕的选择:

ArrayList<MyObject> list = new ArrayList<>();

作为 Java 程序员,我们被教导要使用变量的接口(interface)类型,因为它允许我们使用任何实现类型,而不仅仅是特定的类型。但如果将列表放入 Bundle 中,您需要特定的实现类型。因此,请继续使用它。

关于android - 转换为 ArrayList<?在 onSaveInstanceState 中保存 List 时扩展 Parcelable>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48979726/

相关文章:

java - 如何从员工名单中获取姓名

java - 如何使用 java 8 流将 float ArrayList 转换为原始 float 数组?

java - XStream arrayList 到 XML 和从 XML

java - 从Java中的列表中删除重复的对象

android - RequiresApi vs TargetApi android注解

android - 应用于嵌套 fragment 的 fragment 间通信?

Android 原生库引用了错误的共享库

python - 排序和过滤列表

Python 列表操作和列表比较

android - GPS说明