我有一个父类,比如 P 类和三个子类,比如 C1、C2 和 C3。我type
在类 P 中有一个变量来确定子类的类型。我有一个 P 向量,其中包含 C1、C2 和 C3 的几个实例,我使用 Gson 库将该向量对象转换为 JSON。type
当我使用 Gson 从 JSON 重建向量时,将类型设为 Vector<P> (我为此使用 TypeToken)我得到一个类 P 的向量,但是当我根据变量将 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;
}
}