Java8のStreamとFunctionalInterface
ぼけーっとtwitterみてたら見つけたので、日曜日の昼下がりにぼけーっと書いてみる
http://d.hatena.ne.jp/cero-t/20151212/1449929908
Java8といえば・・・
Streamが標準になってFunctionalInterfaceが使える様になった!ってのがかなり大きなトピック(他にも色々あるけど)
ただ、欠点としては末尾最適化は相変わらず無いので普通に再帰しようとするとちゃんとスタックオーバーフローするので再帰テクニックが使えない
さらに、パターンマッチも相変わらず無いのでパターンマッチでゴニョゴニョするっていうテクニックもやっぱり使えない
ついでに、成功・失敗を表すクラスも標準には無いからそっちも使えない
それは一体、何かというと表面的には扱いやすいんだけど変な言語になってるって事
まぁ本気でそっち系が欲しければ別の言語使えって言われて終わりだけどねw
なにを思ったか
まず、ソースコードの終わりがstream.forEach(System.out::println);になってること
ということは最終的には全件処理させたい=streamである必要が無い可能性が非常に高い
あとあのソースコードでは途中でエラーになったときにどうするのかの定義が上手に出来ない
まさか、throw new UncheckedIOException(e);これして終わりなんて事は無いよなぁ・・・
よくあるパターンと言えば、失敗情報を纏めて呼び出し元に返して呼び出し元がよろしくやるって事も出来ない
Stream実験コードとしては十分良いけど、運用のコードとしてはどうなんでしょ〜
まぁ、アドベントカレンダーなんてそんなもんだよなぁ〜まぁ良いかなぁ〜