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

Ana*_*mar 4 java apache-commons-lang

在java中,在if语句中进行比较,我写道

if (x == 1)

并在代码审查中得到一个注释,使用NumberUtils.INTEGER_ONE而不是1.我想知道它实际添加到代码中有什么好处.

dav*_*xxx 6

NumberUtils.INTEGER_ONE 可能来自公共场所.

commons-lang,它被定义为:

public static final Integer INTEGER_ONE = new Integer(1);
Run Code Online (Sandbox Code Playgroud)

commons-lang3,它被定义为:

public static final Integer INTEGER_ONE = Integer.valueOf(1);
Run Code Online (Sandbox Code Playgroud)

第一个版本不使用内部整数缓存(因为尚不存在),而第二个版本利用它.

现在,无论您使用哪个版本,对于您的问题并不重要,因为您比较数值并且不分配或创建数值(缓存可能更有意义的情况).


假设您以这种方式使用它:

if (x == NumberUtils.INTEGER_ONE)
Run Code Online (Sandbox Code Playgroud)
  • 如果x是原语,则效率不高,因为它会产生转换NumberUtils.INTEGER_ONE1int原语的拆箱操作.

  • 如果x是一个对象,那么将Integer对象与equals()or 进行比较也不是一个好主意intValue().