ifステートメントでの比較のためにJavaで、私は書いた
if (x == 1)
コード レビューで、1 の代わりに NumberUtils.INTEGER_ONE を使用するというコメントがありました。実際にコードにどのような利点が追加されるのか疑問に思っていました。
ifステートメントでの比較のためにJavaで、私は書いた
if (x == 1)
コード レビューで、1 の代わりに NumberUtils.INTEGER_ONE を使用するというコメントがありました。実際にコードにどのような利点が追加されるのか疑問に思っていました。
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);
最初のバージョンは内部整数キャッシュを (まだ存在していなかったため) 使用しませんが、2 番目のバージョンはそれを利用します。
さて、使用しているバージョンが何であれ、整数値を比較し、整数値を割り当てたり作成したりしないため、質問にはあまり関係ありません(キャッシュがより理にかなっている場合)。
次のように使用しているとします。
if (x == NumberUtils.INTEGER_ONE)
がプリミティブの場合、int プリミティブx
に変換するためのボックス化解除操作が発生するため、あまり効率的ではありません。NumberUtils.INTEGER_ONE
1
がオブジェクトの場合、オブジェクトはまたはと比較する必要があるx
ため、良い考えではありません。Integer
equals()
intValue()