你是否需要将Long
变量定义为
Long myUserId = 1L;
?
为什么不能直接使用Long myUserId = 1;
?
你是否需要将Long
变量定义为
Long myUserId = 1L;
?
为什么不能直接使用Long myUserId = 1;
?
Long myUserId = 1; // error
由于1
是一个整数,所以这个方法不能正常工作。
它将被自动装箱为:
Integer myUserId = 1; // ok
long myUserId = 1; // also ok
所以,是的,你必须说
Long myUserId = 1L;
这是一个可以自动装箱为 Long
类型的 long
。
至于为什么它会这样工作(或者说在这种情况下不起作用):很可能是因为自动装箱是后来添加的(在Java5中),必须绝对保持向后兼容。这限制了他们能够使其变得“平滑”的程度。
Long myUserId = Integer.valueOf(1);
...我希望这显然是可以解释的。:-)