[ Java ] null を拒絶して例外を発生させる Objects.requireNonNull

Pocket

Java に限ったことでもありませんが、メソッドのパラメータなどが null である場合に例外を発生させるようにすることも多いと思います。自前でチェックすることももちろん良いと思いますが、Java にはメソッドが用意されています。

スポンサーリンク


null なら NullPointerException を発生させる Objects.requireNonNull メソッド

次の null チェックを行う処理は同等のモノになります。

// null であってはならない
if (obj == null) {
    // 例外発生
    throw new NullPointerException();
}

// 上記と同じ処理を Objects.requireNonNull で代替する
// 引数がnullだとNullPointerException例外が発生する
Objects.requireNonNull(obj);

まあ、これだけの話です。

なお、Java では、ドキュメントなどにはクラスメソッドを記述する場合には、

Objects.requireNonNull NG

Objects#requireNonNull OK

のようですが、ここでは、そのようになっていません。悪しからず。

単純に「#」区切りは読みにくくないですか?なお、私は Java がキライです。

ムカつくライブラリの作り方

Objects.requireNonNull では、例外時のメッセージを第2パラメータで指定することもできます。ライブラリや部品を担当して、その他のメンバーに使ってもらうような人は、次のように間違った使い方をしていることを優しく教えてあげることもできます。

優しく教えてあげることは、メンバー間の無駄なやり取りも防ぐことができ、工数の短縮にもつながりますので、非常に有用な使い方だと思います。

public void helpMe(Object obj) {

    // パラメータの妥当性検証
    Objects.requireNonNull(obj, "お前の人生、矢沢の2秒");

    // 以降、実際の処理を記述
              ・
              ・
}

 

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>