使用 NumberUtils.INTEGER_ONE 和其他此类实用程序的好处

Benefits of using NumberUtils.INTEGER_ONE and other such utilities

在java中为了比较if语句,我写了

if (x == 1)

并在代码审查中收到一条评论,使用 NumberUtils.INTEGER_ONE 而不是 1。我想知道它实际上会给代码带来什么好处。

NumberUtils.INTEGER_ONE 可能来自 commons-lang。

commons-lang中定义为:

public static final Integer INTEGER_ONE = new Integer(1);

commons-lang3中定义为:

public static final Integer INTEGER_ONE = Integer.valueOf(1);

第一个版本不使用内部整数缓存(因为当时还不存在) 而第二个版本利用了它。

现在,无论您使用的是什么版本,当您比较 整数 值并且您不分配或创建 整数 值(缓存可能更有意义的情况)。


假设你是这样使用它的:

if (x == NumberUtils.INTEGER_ONE)
  • 如果 x 是原语,效率不高,因为它会产生一个拆箱操作,将 NumberUtils.INTEGER_ONE 转换为 1 int 原语。

  • 如果 x 是一个对象,这不是一个好主意,因为 Integer 对象应该与 equals()intValue() 进行比较。