我有一张简单的地图:
Map<String, Object> myMap;
我只是想知道,这两种解决方案有什么区别:
首先,当我将double
值作为Double
对象时:
myMap.put("object", Double.valueOf(myPrimitiveDouble));
第二,当我将double
值作为基本类型时:
myMap.put("primitive", myPrimitiveDouble);
我认为第一个是不必要的,我是对的吗? 谢谢你的答案!
答案 0 :(得分:3)
当您将原始double
作为值放入Map<String, Object>
时,它会自动加入Double
类型,因为通用集合(包括地图)不使用基元。
这称为autoboxing。
因此,Double.valueOf
调用在这种情况下确实是多余的。
示例强>
Map<String, Object> myMap = new HashMap<>();
double foo = 5;
myMap.put("", foo);
System.out.println(myMap.get("").getClass());
<强>输出强>
class java.lang.Double
注意强>
当使用double
,Double
或Object
对参数化进行参数化时,Java会自动将原始Number
设置为Double
。
但是,如果您的地图值使用不兼容的类型进行参数化,则代码将无法编译,例如Integer
。