AMG Solution

null判定やオブジェクト比較に便利! java.util.Objectsの便利なメソッド5選

feels

こんにちは。いろんなユーティリティメソッドを使い倒したい堀部です。
 
今回はJavaでよく実装するnullチェックやオブジェクトの比較、String型への変換が楽になる、java.util.Objectsクラスを紹介したいと思います。
 
java.util.ObjectsはJava 7で新しく導入され、Java 8でさらにメソッドが追加された標準APIです。これを使うと毎回のように書いていたユーティリティメソッドを省略できるようになるかもしれません。

今回紹介するメソッドのまとめ

今回ご紹介するメソッドは、下記の5つです。java.util.Objectsの詳細はJavaDocをご覧ください。

メソッド名 引数 戻り値
equals・deepEquals Object a, Object b boolean
toString Object o, String nullDefault String
compare T a, T b, Comparator c int
isNull・nonNull Object obj boolean
requireNonNull T obj
T obj, String message
T obj, Supplier messageSupplier
<T>T

equals・deepEquals:オブジェクトを比較

equalsは2つの引数が等しいかを比較するメソッドです。引数がどちらもnullの場合もtrueとなります。
 
deepEqualsは配列などの要素に対して再帰的に比較が行えます。配列要素が全て等しい場合にtrueを返します。
 

toString:String型へ変換

toStringは引数に渡した値をString型に変換して返します。引数がnullであった場合、”null”という値が返されます。
 
nullの場合に返す値を変更したい場合は、2番目の引数に任意の文字列を指定します。
 

compare:オブジェクトを比較

compareは1番目と2番目の引数を比較し、同じ場合は0を返します。異なる場合は3番目の引数に指定したComparatorでの比較結果を返します。
 

isNull・nonNull:nullをチェック

isNullは引数がnullの場合にtrueを返します。nonNullは逆にnull以外の場合にtrueを返します。
 

requireNonNull:nullでないことをチェック

requireNonNullは引数がnullでないことをチェックします。nullの場合はNullPointerExceptionが発生します。2番目の引数を指定することでカスタマイズしたNullPointerExceptionを返すことができます。
 
NullPointerExceptionの発生にはコストがかかりますので、基本的にはnullにならない変数に対して使用するのが良いと思います。
 

まとめ

いかがでしたでしょうか?
 
今回ご紹介したユーティリティメソッドはApache Commonsなどのライブラリにもありますが、標準APIにあるのであればこちらを積極的に使っていきたいですね。
 
サンプルの中で使用した、ComparatorやSupplierについても機会があればご紹介したいと思います。
 
 
 
 
≪関連記事≫

feels recruit

HORIBE'S BLOG

堀部の記事

堀部の記事の最新情報をお届けいたします。

SAME CATEGORY BLOG

この記事と同様のカテゴリー記事

feelsでSFA・CRM
はじめました。
LOADING