Stream<T> の toArray(T::new);
toArray の引数が IntFunction<A> なのであるからといって、
.toArray(v->new T[v]);
と書く人は少ない。
IntStream の toArray() が、int[] を生成するのだが、
int[] intary = IntStream.rangeClosed(1, 5).toArray();
Integer の配列は、IntStream のまま、toArray で作成できるわけがなく、
一旦、IntStream から、Stream<Integer> にしないと、toArray で変換できない。
例)
Integer[] integerAry = IntStream.rangeClosed(1, 5).mapToObj(Integer::valueOf).toArray(Integer[]::new);
mapToObj じゃなくて、IntStream なんだから、boxed で
Stream<Integer> integerStream = IntStream.rangeClosed(1, 5).boxed(); Integer[] integerAry = integerStream.toArray(Integer[]::new);
つまり、
Integer[] integerAry = IntStream.rangeClosed(1, 5).boxed().toArray(Integer[]::new);
Stream ではなく、省略可能引数のメソッドの呼び出しも、配列に変換するメソッドにすることになる視点も
面白い。
public T[] setandgetFunction(T...t) { // TODO return t; }