将 Long 值解析为 Long?
Parsing Long value to Long?
我正在使用一个非常旧的代码库,存在很多已弃用或过时的代码。大部分都是简单的预装箱。
但是这位向我提出了一个问题:
private java.lang.Long version = Long.valueOf(-1L);
-1L
是否已经将值定义为 Long?这在以前有可能吗?
请注意,这不是 -1l
,而是 -1L
。
写成-1
甚至-1l
我都能理解。有人可以向我解释发生了什么事吗?
-1l
和 -1L
相同 - 都是原始 long
文字。
Long.valueOf()
returns 与传递的原语具有相同值的 Long
实例。
重要的是要注意 Long.valueOf()
在您向其传递较小的值(即介于 -128 和 127 之间的值)时使用 LongCache
,因此它不必创建新的Long
个实例。
简单地分配 Long version = -1L;
会自动将 -1L
原始文字装箱到 Long
。自动装箱是否会创建一个新的 Long
实例,或者编译器是否足够聪明来使用 LongCache
取决于编译器。我想无论是谁编写了您发布的代码,都不想依赖编译器做一些聪明的事情。
我正在使用一个非常旧的代码库,存在很多已弃用或过时的代码。大部分都是简单的预装箱。
但是这位向我提出了一个问题:
private java.lang.Long version = Long.valueOf(-1L);
-1L
是否已经将值定义为 Long?这在以前有可能吗?
请注意,这不是 -1l
,而是 -1L
。
写成-1
甚至-1l
我都能理解。有人可以向我解释发生了什么事吗?
-1l
和 -1L
相同 - 都是原始 long
文字。
Long.valueOf()
returns 与传递的原语具有相同值的 Long
实例。
重要的是要注意 Long.valueOf()
在您向其传递较小的值(即介于 -128 和 127 之间的值)时使用 LongCache
,因此它不必创建新的Long
个实例。
简单地分配 Long version = -1L;
会自动将 -1L
原始文字装箱到 Long
。自动装箱是否会创建一个新的 Long
实例,或者编译器是否足够聪明来使用 LongCache
取决于编译器。我想无论是谁编写了您发布的代码,都不想依赖编译器做一些聪明的事情。