@Test public void andFilter() { Filter<String> startsWithP = new Filter<String>() { @Override public boolean apply(String breakfast) { return breakfast.startsWith("p"); } }; Filter<String> notPoo = new Filter<String>() { @Override public boolean apply(String breakfast) { return !"poo".equals(breakfast); } }; assertTrue(and(startsWithP, notPoo).apply("pancakes")); assertFalse(and(startsWithP, notPoo).apply("poo")); }
public static <T> Filter<T> and(final Filter<T> first, final Filter<? super T> second) { checkNotNull(first, "first"); checkNotNull(second, "second"); return new Filter<T>() { public boolean apply(T in) { if (!first.apply(in)) { return false; } return second.apply(in); } }; }
Util { public static <T> Filter<T> and(final Filter<T> first, final Filter<? super T> second) { checkNotNull(first, "first"); checkNotNull(second, "second"); return new Filter<T>() { public boolean apply(T in) { if (!first.apply(in)) { return false; } return second.apply(in); } }; } }
Util { public static <T> Filter<T> and(final Filter<T> first, final Filter<? super T> second) { checkNotNull(first, "first"); checkNotNull(second, "second"); return new Filter<T>() { public boolean apply(T in) { if (!first.apply(in)) { return false; } return second.apply(in); } }; } private  Util(); }
Util { public static <T> Filter<T> and(final Filter<T> first, final Filter<? super T> second) { checkNotNull(first, "first"); checkNotNull(second, "second"); return new Filter<T>() { public boolean apply(T in) { if (!first.apply(in)) { return false; } return second.apply(in); } }; } private  Util(); static boolean equal(Object a, Object b); static String slurp(Reader reader); static String join(char delim, Object... parts); static List<String> split(char delim, String toSplit); static T nextOrNull(Iterator<T> it); static Iterator<T> singletonIterator(final T nullableValue); static PeekingIterator<T> peekingIterator(final Iterator<T> iterator); static Iterator<T> concat(final Iterator<T> first, final Iterator<T> second); static Iterator<T> concat(final Iterable<? extends Iterable<? extends T>> i); static Iterator<T> filter(final Iterator<T> unfiltered,
                                       final Filter<? super T> filter); static Filter<T> and(final Filter<T> first, final Filter<? super T> second); static String flatten(Map<String, Object> input); static Map<String, Object> toMap(String type, String rdata); static Map<String, Object> toMap(String type, List<String> parts); }
Util { public static <T> Filter<T> and(final Filter<T> first, final Filter<? super T> second) { checkNotNull(first, "first"); checkNotNull(second, "second"); return new Filter<T>() { public boolean apply(T in) { if (!first.apply(in)) { return false; } return second.apply(in); } }; } private  Util(); static boolean equal(Object a, Object b); static String slurp(Reader reader); static String join(char delim, Object... parts); static List<String> split(char delim, String toSplit); static T nextOrNull(Iterator<T> it); static Iterator<T> singletonIterator(final T nullableValue); static PeekingIterator<T> peekingIterator(final Iterator<T> iterator); static Iterator<T> concat(final Iterator<T> first, final Iterator<T> second); static Iterator<T> concat(final Iterable<? extends Iterable<? extends T>> i); static Iterator<T> filter(final Iterator<T> unfiltered,
                                       final Filter<? super T> filter); static Filter<T> and(final Filter<T> first, final Filter<? super T> second); static String flatten(Map<String, Object> input); static Map<String, Object> toMap(String type, String rdata); static Map<String, Object> toMap(String type, List<String> parts);  }