【发布时间】:2015-12-19 10:03:09
【问题描述】:
我有以下代码,其中我得到一个 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(); 获得“原始”类型,但我不知道如何使用它来解决我的问题。
我在查询结果中有两个ints,我想知道它们的总和。因此我必须将Objects 转换为int,然后建立总和。下次我想做同样的事情,但类型不是ints,而是floats。
【问题讨论】:
-
假设你可以做你想做的事......你可能会对结果做什么?您不可能将它存储在变量中(因为您不知道该变量将是什么类型)或对它做任何事情(因为您在编译时不知道它是什么类型)或用它调用方法(因为编译器不知道调用哪个方法,因为它不知道类型)。
-
@immibis HashMap 是数据库查询的结果。因此,为了使用此结果,我尝试将各个字段动态转换回它们的类型。
-
动态地,这些对象已经属于该特定类型。
-
@maxkra 我仍然不确定我是否理解。如果可能的话,你能展示你的代码会是什么样子吗? (为它编一些语法)
-
@maxkra 你知道
Field1是int还是你需要检测它的类型?