ヨーダ記法というのがある。オブジェクト(特に文字列)を比較する際にnullチェックを省略するために対象のオブジェクトではなく、リテラルの方のequalsメソッドを使う手法だ。
なんだけど、Java7からはObjectsクラスが導入された。
Objectsメソッドにはstaticメソッドとしてequlasメソッドが存在するので、こちらを使うほうが今後のイディオムになるかもしれない。
boolean Objects::equals(Object a, Object b)
このメソッドはaとbのどちらかがnullの場合はfalseを返し、両方がnullの場合はtrueを返す。両方ともnullではない場合はa.equals(b)の結果が返される。
Objectsメソッドにはequalsメソッド以外にもオブジェクト比較やnullチェックに便利なメソッドがあるので、Java7以降でコードを書く場合は使ってみるといいかもしれない。
ちなみになぜヨーダ記法なんて呼ばれているかというと。。。
スターウォーズのヨーダが通常の英語とは違う語順でしゃべるからだそうです。
String jedi; ... if ("Yoda".equals(jedi)) ...確かにこれならstrがnullでもNullPointerExceptionが発生しないし、条件分岐はfalse側に行く。
なんだけど、Java7からはObjectsクラスが導入された。
Objectsメソッドにはstaticメソッドとしてequlasメソッドが存在するので、こちらを使うほうが今後のイディオムになるかもしれない。
boolean Objects::equals(Object a, Object b)
このメソッドはaとbのどちらかがnullの場合はfalseを返し、両方がnullの場合はtrueを返す。両方ともnullではない場合はa.equals(b)の結果が返される。
Objectsメソッドにはequalsメソッド以外にもオブジェクト比較やnullチェックに便利なメソッドがあるので、Java7以降でコードを書く場合は使ってみるといいかもしれない。
ちなみになぜヨーダ記法なんて呼ばれているかというと。。。
スターウォーズのヨーダが通常の英語とは違う語順でしゃべるからだそうです。
0 件のコメント:
コメントを投稿