Java autoboxing int to Long [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

为什么Java编译器不能直接将int强制转换为Long

long test = 1; // ok
Long test2 = 2; // does not compile!
Long test3 = 3L; // ok

这是特别令人沮丧的,因为(当然)可以做到

long test = 1;    
Long test2 = test;

这是一个刻意的设计选择吗?如果这被允许会出现什么问题?

java casting autoboxing
1个回答
0
投票

int是Java中的原始数据类型。 long也是一种原始数据类型,但Long不是原始数据类型。隐式转换不起作用。您必须明确告诉Java转换为Long类型的对象。

可以隐式地将long强制转换为Long,因为它是单个隐式转换。从intLong将是一步中的两次转换,这是不受支持的。

对于整数后缀语法100L,请参阅JLS 3.1L将值的类型设置为longinstead of int,这是整数类型的默认情况。

© www.soinside.com 2019 - 2024. All rights reserved.