为什么允许将原始数据类型添加到ArrayList?

时间:2013-05-19 16:49:02

标签: java generics object integer primitive-types

我了解可以将整数对象添加到ArrayList类型的Integer。这对我来说很有意义。像这样:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(3));

但为什么可以添加像int而不是Integer这样的原始数据类型?像这样:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);

为什么允许?

1 个答案:

答案 0 :(得分:16)

这称为autoboxing。对于具有相应原语的类(例如Long - &gt; longInteger - &gt; int),Java将为您处理转换。

应该注意这种行为伴随着一些黑暗的角落:

  1. 性能损失;
  2. 极端情况:当null被取消装入基元时,将抛出NullPointerException,这对于程序员来说可能是意料之外的,因为它看起来像是一个基元抛出异常。