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
的情况下,您需要需要特定的实现类型。因此,请继续使用它。