我的活动有一个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。
有人可以解释为什么类型会从序列化变为反序列化吗?