我有以下代码,其中我得到一个HashMap<String,Object>
,它包含不同的数据类型作为值(例如int,String,float),并希望将Object转换为其原始类型。
HashMap<String,Object> values = new HashMap<String,Object>;
values.put("Field1", 23);
values.put("Field2", "teststring");
values.put("Field3", 64.23f);
int a = (Integer)values.get("Field1");
String b = (String)values.get("Field2");
float c = (Float)values.get("Field3");
正如您所看到的,我知道如何通过类型转换来实现这一点,但有没有办法动态地执行此操作?
我知道我可以使用values.get("Field3").getClass();
获取“原始”类型,但我不知道如何使用它来解决我的问题。
我在查询结果中有两个int
,我想知道它们的总和。因此,我必须将Object
转换为int
,然后构建总和。下次我想做同样的事情,而不是int
s,类型是float
s。
答案 0 :(得分:1)
请使用如下的instanceof运算符。
if(obj instanceof String){
cast to string
}
else if(obj instanceof Integer){
cast to int
}
答案 1 :(得分:0)
如果我已正确理解您的问题,您应该执行以下操作:
Object obj = values.get(fieldName);
if(obj instanceof Float){
float f = (float) obj;
// do what you need with a float
} else if(obj instanceof String){
String s = (String) obj;
// do what you need with a String
} ...
类型设置和优先级取决于您的任务。