强制转换为 ArrayList<? 扩展了 Parcelable> 在 onSaveInstanceState 中保存 List 时



i coulnd在此上找不到答案:

我想在onsaveinstancestate中保存一个包裹式的阵列列表,但是当我这样做时,它不接受该列表被声明为列表:

outState.putParcelableArrayList(KEY_QUESTION_LIST, questionList);

所以我有2个选项:将列表声明为arraylist,或将其施放到类似的包裹式列表中:

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

并将其声明为列表:

private List<Question> questionList;

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

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

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

如果您要稍后写(ArrayList) list,则没有问题。但是,我认为这是总体上一个更糟糕的选择,而不是简单地将您的列表宣布为一个阵列列表:

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

作为Java程序员,我们被教导要为我们的变量使用接口类型,因为它使我们可以使用任何实现类型,而不仅仅是特定类型。但是,在将列表放入Bundle的情况下,您需要需要特定的实现类型。因此,请继续使用它。

最新更新