我正在使用一个非常古老的代码库,因此存在大量已弃用或过时的代码。大部分都是简单的拳击前。
但是这个问题跟我提出了一个问题:
private java.lang.Long version = Long.valueOf(-1L);
-1L
是否已将值定义为Long?这之前有可能吗?
请注意,它不是-1l
,而是-1L
。
我会理解它是写成-1
还是-1l
。有人可以向我解释发生了什么事吗?
答案 0 :(得分:5)
-1l
和-1L
相同 - 都是原始的long
文字。
Long.valueOf()
返回一个Long
实例,其值与传递的原语相同。
值得注意的是Long.valueOf()
在向其传递小值时使用LongCache
(即-128到127之间的值),因此它没有创建一个新的Long
实例。
只需指定Long version = -1L;
即可将-1L
原始文字自动设为Long
。是否将通过自动装箱创建新的Long
实例或编译器将足够聪明以使用LongCache
取决于编译器。我想无论是谁写了你发布的代码,都不想依赖编译器做聪明的事情。