package net.varkhan.base.functor.predicate;
import net.varkhan.base.functor.Predicate;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 4/7/12
* @time 5:12 PM
*/
public class ConstPredicate<A,C> implements Predicate<A,C> {
protected final boolean val;
public ConstPredicate(boolean val) { this.val=val; }
public boolean invoke(A arg, C ctx) { return val; }
protected static final Predicate<?,?> TRUE = new ConstPredicate(true);
protected static final Predicate<?,?> FALSE = new ConstPredicate(false);
@SuppressWarnings({ "unchecked" })
public static <A,C> Predicate<A,C> TRUE() { return (Predicate<A, C>) TRUE; }
@SuppressWarnings({ "unchecked" })
public static <A,C> Predicate<A,C> FALSE() { return (Predicate<A, C>) FALSE; }
@SuppressWarnings({ "unchecked" })
public static <A,C> Predicate<A,C> as(boolean val) { return (Predicate<A, C>) (val?TRUE:FALSE); }
@Override
public String toString() {
if(val) return "true";
else return "false";
}
}