0

private List<MyType> test私のアクティビティには、に初期化されるメンバー変数がありますImmutableList.of()。この変数の唯一の他の割り当ては、 の 1 つの要素でImmutableList.copyOf()をコピーすることです。SingletonImmutableListMyType

これは私の 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