我的活动有一个成员变量private List<MyType> test
,初始化为ImmutableList.of()
。此变量的唯一其他分配是ImmutableList.copyOf()
,它将SingletonImmutableList
复制为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。
有人可以解释为什么类型会从序列化变为反序列化吗?