对于Java中的List <long>,在添加它之前,是否必须将long of long转换为Long?</long>

时间:2014-06-20 04:17:49

标签: java list arraylist casting

如果你有List<Long> list,你是否必须将原始长片投射到龙?

你必须这样做吗

long l = -1; list.add( (Long) l);

或将

list.add(l);

没关系,不会引起任何异常/错误吗?

3 个答案:

答案 0 :(得分:0)

我假设你的java版本是&gt; 1.5因为您使用了通用列表。

因此,在您的情况下,list.add(l);将起作用

不要害怕在本地机器上尝试这样的事情。

在此处阅读更多内容:Autoboxing and Unboxing

答案 1 :(得分:0)

不,不,int原语将是AutoBoxed

答案 2 :(得分:0)

没有必要将原始类型long转换为对象包装类Long编译器来处理它。它被称为Autoboxing。

正如 JavaDoc 所说: Autoboxing是Java编译器在基元类型和相应的对象包装类之间进行的自动转换。例如,将int转换为Integer,将double转换为Double,依此类推。如果转换采用另一种方式,则称为拆箱。。请refer

请考虑以下代码:

List<Integer> list = new ArrayList<>();
for (int i = 1; i < 50; i += 2)
    list.add(i);

虽然您将int值作为基本类型而不是Integer对象添加到列表中,但代码会进行编译。因为list是Integer对象的列表,而不是int值列表,所以您可能想知道为什么Java编译器不会发出编译时错误。编译器不会生成错误,因为它从i创建一个Integer对象并将该对象添加到列表中。因此,编译器在运行时将以前的代码转换为以下代码:

List<Integer> list = new ArrayList<>();
for (int i = 1; i < 50; i += 2)
    list.add(Integer.valueOf(i));