java8.util.DelegatingSpliterator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of streamsupport Show documentation
Show all versions of streamsupport Show documentation
streamsupport is a backport of the Java 8 java.util.function (functional interfaces) and
java.util.stream (streams) API for Java 6 / 7 and Android developers
The newest version!
/*
* Written by Stefan Zobel and released to the
* public domain, as explained at
* http://creativecommons.org/publicdomain/zero/1.0/
*/
package java8.util;
import java.util.Comparator;
import build.IgnoreJava8API;
import java8.util.function.Consumer;
import java8.util.function.Consumers;
/**
* A j8.u.Spliterator implementation that delegates to a j.u.Spliterator.
*
* @param
* the type of the input to the operation
*/
@IgnoreJava8API
final class DelegatingSpliterator implements Spliterator {
private final java.util.Spliterator spliter;
DelegatingSpliterator(java.util.Spliterator spliterator) {
Objects.requireNonNull(spliterator);
this.spliter = spliterator;
}
@Override
public boolean tryAdvance(Consumer super T> action) {
return spliter.tryAdvance(new ConsumerDelegate<>(action));
}
@Override
public Spliterator trySplit() {
java.util.Spliterator spliterator = spliter.trySplit();
if (spliterator == null) {
return null;
}
return new DelegatingSpliterator<>(spliterator);
}
@Override
public long estimateSize() {
return spliter.estimateSize();
}
@Override
public int characteristics() {
return spliter.characteristics();
}
@Override
public void forEachRemaining(Consumer super T> action) {
spliter.forEachRemaining(new ConsumerDelegate<>(action));
}
@Override
public long getExactSizeIfKnown() {
return spliter.getExactSizeIfKnown();
}
@Override
public boolean hasCharacteristics(int characteristics) {
return spliter.hasCharacteristics(characteristics);
}
@Override
public Comparator super T> getComparator() {
return spliter.getComparator();
}
/**
* A j.u.f.Consumer implementation that delegates to a j8.u.f.Consumer.
*
* @param
* the type of the input to the operation
*/
private static final class ConsumerDelegate implements
java.util.function.Consumer {
private final Consumer delegate;
ConsumerDelegate(Consumer delegate) {
Objects.requireNonNull(delegate);
this.delegate = delegate;
}
@Override
public void accept(T t) {
delegate.accept(t);
}
@Override
@IgnoreJava8API
public java.util.function.Consumer andThen(
java.util.function.Consumer super T> after) {
Objects.requireNonNull(after);
return new ConsumerDelegate(Consumers.andThen(delegate,
new java8.util.function.Consumer() {
@Override
public void accept(T t) {
after.accept(t);
}
}));
}
}
}