如果你有List<Long> list
,你是否必须将原始长片投射到龙?
你必须这样做吗
long l = -1;
list.add( (Long) l);
或将
list.add(l);
没关系,不会引起任何异常/错误吗?
答案 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));