package com.googlecode.totallylazy.predicates;
import com.googlecode.totallylazy.annotations.multimethod;
public class LessThanPredicate<T extends Comparable<? super T>> extends LogicalPredicate<T> implements LessThan<T> {
private final T comparable;
private LessThanPredicate(T comparable) {
this.comparable = comparable;
}
public static <T extends Comparable<? super T>> LessThanPredicate<T> lessThan(T comparable) {
return new LessThanPredicate<T>(comparable);
}
public boolean matches(T other) {
return other.compareTo(comparable) < 0;
}
public T value() {
return comparable;
}
@Override
public String toString() {
return String.format("lessThan '%s'", comparable);
}
@multimethod
public boolean equals(LessThanPredicate predicate) {
return comparable.equals(predicate.comparable);
}
@Override
public int hashCode() {
return comparable.hashCode();
}
}