[Java] equalsを使って変数と定数を比較するとき | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

変数と定数を比較するとき、


[変数] [演算子] [定数]

という書き方をすることが多いと思います。


ほとんどの場合、必ずしもそうでなければならないわけではありませんが、言語的に解釈したときに自然な表現だからなのでしょう。


普通、「変数A の値が"Y"である」とは言いますが、「"Y"が変数A の値である」とは言いませんから。



しかし、Java で Objectクラスの equalsメソッドを使って変数と定数を比較する際は、


flag.equals("Y")

と書くよりも


"Y".equals(flag)

と書いたほうが安全です。


変数クラスに対して equals を使用すると変数が Null だった場合に、NullPointerException が発生してしまう可能性があるからです。



ただし、そうはいっても、やはりかなり違和感のある表現ですので、私は”変数が Null でないことが保証されていない”場合に限って


"Y".equals(flag)

というような表現を使用しています。



変更時に”変数が Null でないことが保証されていない”という前提が崩れてしまう可能性も考慮すると、すべからく


"Y".equals(flag)

と書いておいたほうがいいのかもしれませんが...