如何将Object转换为“原始”类型

时间:2015-09-22 12:18:15

标签: java object types casting

我有以下代码,其中我得到一个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。

2 个答案:

答案 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
} ...

类型设置和优先级取决于您的任务。