package ilarkesto.fp; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class And<E> implements Predicate<E> { private List<Predicate<E>> predicates = new ArrayList<Predicate<E>>(); public And() {} public And(Predicate<E>... predicates) { this.predicates.addAll(Arrays.asList(predicates)); } public void add(Predicate<E> predicate) { predicates.add(predicate); } public boolean test(E parameter) { for (Predicate<E> predicate : predicates) { if (!predicate.test(parameter)) return false; } return true; } }