package org.osgl.util; import org.osgl.$; import java.util.Iterator; /** * Created with IntelliJ IDEA. * User: luog * Date: 9/11/13 * Time: 5:05 PM * To change this template use File | Settings | File Templates. */ class FilteredTrav<T> extends IterableTrav<T> { private $.Predicate<? super T> filter; FilteredTrav(Iterable<? extends T> iterable, $.Function<? super T, Boolean> predicate) { super(iterable); E.NPE(predicate); filter = $.predicate(predicate); } @Override public Iterator<T> iterator() { return Iterators.filter(super.iterator(), filter); } public static <T> C.Traversable<T> of(Iterable<? extends T> iterable, $.Function<? super T, Boolean> predicate) { return new FilteredTrav<T>(iterable, predicate); } }