В настоящее время у нас есть следующий Stream.concat
в Java 8:
public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b);
Я удивлен, почему нет версии, использующей varargs Stream<? extends T>
?
В настоящее время код написан как:
Stream<Integer> resultStream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)))
.filter(x -> x != 0)
.filter(x -> x != 1)
.filter(x -> x != 2);
Если были доступны varargs этой сигнатуры:
public static <T> Stream<T> concat(Stream<? extends T>... streams);
Тогда я мог бы написать это намного яснее:
Stream<Integer> resultStream = Stream.concat(
stream1,
stream2,
Stream.of(element)
)
.filter(x -> x != 0)
.filter(x -> x != 1)
.filter(x -> x != 2);
Без всех видов вложенных вызовов Stream.concat
.
Или есть другие причины, почему он не предоставляется?
Я не могу думать о таких причинах, так как мы в конечном итоге все еще выполняем работу varargs.