将 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 取决于编译器。我想无论是谁编写了您发布的代码,都不想依赖编译器做一些聪明的事情。