親クラス (クラス P など) と 3 つの子クラス (C1、C2、C3 など) があります。type
子クラスのタイプを決定するために、クラス P に変数があります。C1、C2、C3 の複数のインスタンスを含む P のベクトルがあり、Gson ライブラリを使用してそのベクトル オブジェクトを JSON に変換します。Vector<P> として型を指定する Gson を使用して JSON からベクトルを再構築すると (そのために TypeToken を使用します)、クラス P のベクトルを取得しますが、type
変数に応じて P オブジェクトを子クラスのいずれかにキャストすると、I ClassCastException を取得します。どうすれば例外なくこれを達成できますか??
Type t = new TypeToken<Vector<P>>() {}.getType();
Vector ps=(Vector<P>)gson.fromJson(jsonString,t);
for(P pObj : ps ) {
if(pObj.type == 1) {
C1 cObj=(C1)pObj;
}
else if(pObj.type == 2) {
C2 cObj=(C2)pObj;
}
else if(pObj.type == 3) {
C3 cObj=(C3)pObj;
}
}