Java SE 8では、ラムダ式とストリームを利用するために、新しいクラスが追加され、既存のクラスが拡張されました。これについては、Javaチュートリアルの集計操作に関するレッスンに説明されています。これらの新しいクラスと拡張されたクラスのほとんどは、次のパッケージに入っています。
java.util
: 既存のパッケージ。java.lang.invoke
パッケージに加えて、Java Collections Frameworkをストリームと統合し、ストリームで使用される一般的なユーティリティ機能を提供します。java.util.function
: 新しいパッケージ。ラムダ式とメソッド参照のためのターゲット型を提供する汎用の関数型インタフェースが含まれています。java.util.stream
: 新しいパッケージ。ストリームと集計操作に機能を提供する大部分のインタフェースおよびクラスが含まれています。既存のクラスへの多数の追加でストリームが利用されています。その他に、関数型インタフェースのインスタンスを受け入れるメソッドも追加されており、ラムダ式やメソッド参照を使用して呼び出すことができます。
java.util.function
java.util.stream
Boolean
、Integer
などのクラスおよびその他のプリミティブ型用のオブジェクト・ラッパー・クラス(AutoboxingとUnboxingに関するトピックを参照)がここに一覧表示されています。それらのクラスが拡張されて、メソッド参照のターゲットに適したメソッドが追加されたためです。たとえば、リストに含まれている整数を追加する次の例で示しているように、Integer.sum
メソッドをメソッド参照として使用できます。
Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8 }; List<Integer> listOfIntegers = new ArrayList<>(Arrays.asList(intArray)); System.out.println("Sum of integers: " + listOfIntegers .stream() .reduce(Integer::sum).get());
(IntStream.sum
メソッドを使用してもストリームに含まれている整数を追加できることに注意してください。)