private List<MyType> test
私のアクティビティには、に初期化されるメンバー変数がありますImmutableList.of()
。この変数の唯一の他の割り当ては、 の 1 つの要素で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 が発生します。
タイプがシリアライゼーションからデシリアライゼーションに変わる理由を誰かが説明できますか?