将原语或对象放入Java中的对象映射之间的区别

时间:2017-05-24 10:14:29

标签: java object hashmap double primitive-types

我有一张简单的地图:

Map<String, Object> myMap;

我只是想知道,这两种解决方案有什么区别: 首先,当我将double值作为Double对象时:

myMap.put("object", Double.valueOf(myPrimitiveDouble));

第二,当我将double值作为基本类型时:

myMap.put("primitive", myPrimitiveDouble);

我认为第一个是不必要的,我是对的吗? 谢谢你的答案!

1 个答案:

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

注意

当使用doubleDoubleObject对参数化进行参数化时,Java会自动将原始Number设置为Double

但是,如果您的地图值使用不兼容的类型进行参数化,则代码将无法编译,例如Integer