【发布时间】:2019-03-05 12:42:04
【问题描述】:
为什么 Java 编译器不能直接将 int 转换为 Long?
long test = 1; // ok
Long test2 = 2; // does not compile!
Long test3 = 3L; // ok
这尤其令人沮丧,因为(当然)一个人可以做到
long test = 1;
Long test2 = test;
这是一个深思熟虑的设计选择吗?如果允许这样做会出什么问题?
【问题讨论】:
-
要使
Long test2 = 2;工作,需要 2 次隐式转换(int到long然后long到Long)。你怎么看? -
@ernest_k 我完全没问题!
-
更糟糕的是,它编译为:
Short test4 = 4;。 stackoverflow.com/questions/14425606/… -
@Thilo 更有理由保持一致并允许其扩大。此外,缩短通常是不安全的。
标签: java casting autoboxing