Help us understand the problem. What is going on with this article?

メソッド内でパラメータの値チェックを行う

More than 5 years have passed since last update.

Google GuavaライブラリのPreconditionsクラスのメソッド達が便利です。
http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/base/Preconditions.html

nullチェック

例えば、こんな感じでメソッドの先頭でパラメータの値がnullかどうかをチェックしたい事はよくあると思います。

if文を使ってパラメータチェックをする場合
public void doSomething(String message) {
    if(message == null) {
        throw new NullPointerException("message must not be null.");
    }
    this.message = message;
}

いちいちif文を書くのが面倒ですが、Guavaライブラリを使うとこんな感じですっきり書くことが出来るようになります。

checkNotNullを使用する場合
public void doSomething(String message) {
    this.message = checkNotNull(message, "message must not be null");
}

もし、messageがnullだった場合は、checkNotNullの第2引数をエラーメッセージとしたNullPointerExceptionが投げられます。

さらに、nullではなかった場合は、messageの値をそのまま返してくれるので、続けてcheckNotNullの返り値を使うことも出来ます。

bool値を返す式によるチェック

他にも、bool値を返す式を引数に渡し、それが偽だった場合は例外を投げてくれるcheckArgumentのようなメソッドも用意されています。

checkArgument
public void doSomethingElse(int value) {
    checkArgument(value > 0, "Expected positive but value was %s", value);
}

これは、valueに0以下の値が渡された場合、IllegalArgumentExceptionが投げられます。

おまけ

Preconditionsで定義されている上記のメソッドはスタティックメソッドなので、static import剃る必要があります。
Eclipseでstatic importを簡単に書く方法はこちらにまとめています。
Eclipseでstatic importを簡単に扱う方法

yuichielectric
Solutions Engineer at GitHub
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした