makotan _at_ gmail dot com

Java8

インタフェースのdefaultメソッドは多重継承用?

多重継承にも使えるけど、インタフェースには変数をもてないので用途としては弱い気がする 個人的には、FunctionalInterfaceの補助メソッドを定義する程度でとりあえず考えてたけど・・・ なんて事を書こうと思ってて時期が遅すぎたのでもう良いかなと思った…

FunctionalInterface

Java8にはFunctionalInterfaceっていうannotationがあって、FunctionalInterfaceの場合は付けることを推奨されてるっぽいんだけど、無かったときにlambdaとして使えないのかな〜とふと思った。 なので、 既にFunctionalInterfaceがついてるインタフェースを…

Function/Consumer/Supplier/Predicateなどなど

この辺の違いがわかればStreamのAPIをみたら色々推測しやすくなるかなぁ〜と思ったのでまとめ Function @FunctionalInterface 値を受け取って他の値を返すもの。 値の変換とか色々を担当 なので、これを引数に取るStreamのAPIのほとんどは他の型のStreamを返…

Streamの再利用をテストしてみた

ArrayListからStreamを取得して、filterした結果のStreamを2回使ってみた なんとなくのコードイメージはこんな感じ(あくまでイメージです) ArrayList<String> datas = getStringList(); Stream<String> stream = datas.stream().filter((s) -> s.length() > 3); stream.forea</string></string>…

Java8のclosureとthis

closureの中のthisはclosureのオブジェクトになる。 Javaのclosureは無名クラスの生成をソースコード上で省略してるだけだ。気をつけろ! ちゃんとテストコード書いて確認しらclosureのオブジェクトにならなかった じゃあ、あの動きは何だったんだろう・・・…

Collectionに追加しながらStreamで処理するとどうなるのか?確認してみた

Streamを使いつつふと思った疑問点が解消するかなぁ〜と 試したコード final AtomicInteger ai = new AtomicInteger(1); final ConcurrentLinkedQueue<Integer> queue = new ConcurrentLinkedQueue<>(); Streams.intRange(1,6).forEach((i)-> { queue.add(ai.getAndIn</integer>…