こんにちは仲間のJava開発者、
in advance
JDK8がまだリリースされていないので(そして今のところまだリリースされていないので)、主題が少しかもしれないことは知っていますが、Lambda式、特にStreamとして知られる新しいコレクションAPIに関連する部分に関する記事を読んでいました。
これは、Java Magazineの記事に記載されている例です(これはカワウソの個体数アルゴリズムです。):
Set<Otter> otters = getOtters();
System.out.println(otters.stream()
.filter(o -> !o.isWild())
.map(o -> o.getKeeper())
.filter(k -> k.isFemale())
.into(new ArrayList<>())
.size());
私の質問は、Set内部反復の途中で、カワウソの1つがnullの場合はどうなるかということです。
NullPointerExceptionがスローされることを期待しますが、以前の開発パラダイム(機能しない)にとどまっている可能性があります。誰かがこれをどのように処理するかについて教えてもらえますか?
これが本当にNullPointerExceptionをスローする場合、この機能は非常に危険であり、以下のようにのみ使用する必要があります。
- null値がないことを確認する開発者(おそらく以前の.filter(o-> o!= null)を使用)
- 開発者は、アプリケーションがnullカワウソまたは処理する特別なNullOtterオブジェクトを生成しないようにします。
最良のオプション、または他のオプションは何ですか?
ありがとう!