0

我的活动有一个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。

有人可以解释为什么类型会从序列化变为反序列化吗?

4

0 回答 0