这个问题在这里已有答案:
为什么Java编译器不能直接将int
强制转换为Long
?
long test = 1; // ok
Long test2 = 2; // does not compile!
Long test3 = 3L; // ok
这是特别令人沮丧的,因为(当然)可以做到
long test = 1;
Long test2 = test;
这是一个刻意的设计选择吗?如果这被允许会出现什么问题?
int
是Java中的原始数据类型。 long
也是一种原始数据类型,但Long
不是原始数据类型。隐式转换不起作用。您必须明确告诉Java转换为Long
类型的对象。
可以隐式地将long
强制转换为Long
,因为它是单个隐式转换。从int
到Long
将是一步中的两次转换,这是不受支持的。
对于整数后缀语法100L
,请参阅JLS 3.1。 L
将值的类型设置为long
instead of int,这是整数类型的默认情况。