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 が発生します。
タイプがシリアライゼーションからデシリアライゼーションに変わる理由を誰かが説明できますか?