Hashmap
包含一个键,其值可以为Integer
或Double
。
如果值的类型为Double
,但对于类型为Integer
失败,则可以使用:
Double value = (Double) locationMap.get("key");
不幸的是,我似乎无法控制类型,因为它是从服务器传输的JSON数据。显然,即使该数字在传输之前是服务器端(Javascript)的类型double
,但没有十进制数字,也将在客户端行的某处解释为Integer
(Java )。
说明可能的Integer
值并将其强制转换为Double
的最短方法是什么?
答案 0 :(得分:3)
假设您知道它是Number
(例如,您首先使用instanceof
进行了测试):
Double value = ((Number) locationMap.get("key")).doubleValue();
如果数字已经是Double
,则效率低下。您可能需要定义一种专门处理该方法的方法:
// Doesn't handle null.
Double toDouble(Number n) {
return (n instanceof Double) ? (Double) n : Double.valueOf(n.doubleValue());
}
Double.valueOf
看起来很多余,但是如果使用条件表达式来避免第二个操作数(see this)的拆箱,则是必需的。