2016-12-22 7 views
2

Java 8より前のバージョンでは、Nullの値では、通常、失敗するために次のようにする必要があります。Java 8オプションNullPointerExceptionのエラーメッセージを定義する方法

Objects.requireNonNull(pointer, "Your Error Message"); 

渡されたパラメータがnullの場合、Java 8マニュアルによると、Optional.ofNullPointerExceptionをスローします。

// Optional.of - throws NullPointerException if passed parameter is null 
Optional<Integer> b = Optional.of(value2); 

OptionalのJava 8でNullPointerExceptionためエラーメッセージを定義する方法はありますか?

+0

@ 4castleええ、ポイント、ありがとうございました。しかし、NullPointerExceptionの省略可能なクラスに ".of"メソッドを置く理由を少しでも満たしていないのは、まだ高速です。少なくとも、 "Objects.requireNonNull"のようなエラーメッセージにオプションのパラメータを提供します。 –

+1

「最後に失敗する」と言ったとき、最後に「オプション」から値を取得しようとするまで、エラーを投げた後に遅れることになっています。 'Optional.ofNullable'を使うこともできます。 – 4castle

+4

パラメータチェックは実際には「オプション」の仕事ではなく、「オプション性」をモデル化しています(特に「ヌルタビリティ」と区別するため)。いくつかの契約を強制したい場合は、オプションまたはオプションになる前にそれを行い、明示的にnullを許可しないメソッドからnullを持つインスタンスを作るように要求すると失敗します。 – pvg

答えて

8

いつでもOptional.of(Objects.requireNonNull(pointer, "message"))と書くことができます。

4

クラスOptionalクラスの場合、通常、値が抽出されるまでエラーをスローすることはできません。あなたが値を取得しようとすると、orElseThrowを使用することができます。

Optional.ofNullable(pointer) 
     ... 
     ... 
     .orElseThrow(() -> new NullPointerException("message")); 

Optionalクラスは、特定のヌルチェックを行うための既存の方法に代わるものではありません。

関連する問題