我有两节课:
public class Parent{
/* Some Code */
}
public class Child1 extends Parent{
/* Some Code */
}
public class Child2 extends Parent{
/* Some Code */
}
我有一个
HashMap<String, Parent>
。使用com.google.gson.Gson
我已经将此HashMap转换为Json:HashMap <String, Parent> criterias = new HashMap <String, Parent>();
Gson gson = new Gson();
Type listOfTestObject = new TypeToken<HashMap<String, parent>>(){}.getType();
String dataCriteria = gson.toJson(criterias, listOfTestObject);
在另一个类中,我想检索此HashMap:
Gson gson = new Gson();
Type listOfTestObject = new TypeToken<HashMap<String, Parent>>(){}.getType();
HashMap<String, Parent> myMap = gson.fromJson(data, listOfTestObject);
问题是我想将HashMap的值从
instanceOf
Child1
转换为Child1
。我得到这个异常:
java.lang.ClassCastException: Parent cannot be cast to Child1
是否有解决方案?
最佳答案
扩展我的评论,如果您声明您的Map
如下
Map<String , ? super Parent> map = new HashMap<String,Parent>();
你将能够
添加
Parent
,Child1
和Child2
值:map.put( "key" , new Child1() );
检索这些并进行适当的转换
Child c1 = (Child1)map.get( "key" );
映射声明的通用部分应读取为:接受
Parent
或具有Parent
作为超类的任何内容。希望能有所帮助。
干杯,
关于java - Java下垂,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25115832/