2016-08-27 9 views
-4

これは何の意味ですか?Java 8のnull値のためのオプション。

Optional.of(someLinkToNull).ifPresent(present -> { 
     System.out.println(present); 
    }); 

はNullpointerExceptionを返します。

オプション(小文字)を使用してnullをチェックする方法の例を挙げてください。

+1

'ofNullable'を使うと、' of'は値をnullにすることができません – mszymborski

+5

これは 'Optional'の良いユースケースです。不要なオブジェクトを作成し、コードを難読化します。ちょうど 'if(someLinkToNull!= null){...}' – 4castle

+0

Admins、delete、please、この質問。 – Arthur

答えて

1

使用ofNullable staticファクトリメソッドではなく、of - 後者は値はnullにすることはできません:

Optional.ofNullable(someLinkToNull).ifPresent(present -> { 
    System.out.println(present); 
}); 

なお、そのオプションについての学習、通常のユースケースのようなコードを書くために細かいですがNPEを避けるために狂ったように分岐しないようにすることもできます。あなたのケースでは、(コメントに記載されている4castleのように)十分なはずの単純なヌルチェック。

Optional.ofNullable(order) 
      .map(Order::getCharges) 
      .flatMap(charges -> charges.stream().filter(ChargeFilters::isFee).findFirst()) 
      .map(Fee::getIssuer) 
      .map(PaymentIssuer::getAddress) 
      .map(Address::getStreet) 
      [...] 

いくつかの物事が間違ってここに行くかもしれません:たとえばこのコードの意味のない作品を考えてみましょう

  • 順序があるかもしれないヌル
  • ため
  • 料に関連した手数料はあり得ない可能性があり発行者に住所がない可能性があります(注文が第三者システムからのものかどうかは分かりません)
  • 発行者の住所で通りが指定されていない可能性があります(たとえば、ボートにstr

上記のように、オプションの流暢なものの代わりに、少なくとも4つのヌルチェックが既にあります。

関連する問題