我的活动有一个private List<MyType> test
初始化为ImmutableList.of()
. 此变量的唯一其他分配是ImmutableList.copyOf()
复制SingletonImmutableList
带有单个元素的 a MyType
。
这是在我的 android 活动上运行的,我想保留这个列表的值。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (!test.isEmpty())
{
outState.putSerializable(SAVE_TEST_KEY, (Serializable) test);
}
}
putSerializable(...)
我已经将调试器连接起来并与SingletonImmutableList
.
@Override
protected void onCreate(Bundle savedInstanceState) {
...
if (savedInstanceState != null)
{
if (savedInstanceState.containsKey(SAVE_TEST_KEY))
{
Object tTest = savedInstanceState.get(SAVE_TEST_KEY);
}
}
...
}
在这条线上savedInstanceState.get(...)
,我可以看到 get 的结果是ArrayList
. 尝试将其强制转换为 ImmutableList 会导致 ClassCastException。
有人可以解释为什么类型会从序列化变为反序列化吗?