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());
私の質問は、セットの内部反復の途中で、カワウソの 1 つが null の場合はどうなるかということです。
NullPointerException がスローされることを期待しますが、以前の開発パラダイム (非機能) にまだとどまっている可能性があります。
これが実際に NullPointerException をスローする場合、この機能は非常に危険であることがわかり、以下のようにのみ使用する必要があります。
- null 値がないことを確認する開発者 (おそらく以前の .filter(o -> o != null) を使用)
- 開発者は、アプリケーションが null otter または処理する特別な NullOtter オブジェクトを生成しないようにします。
最良の選択肢、または他の選択肢は何ですか?