Предоставляет ли Guava Predicates.is (T) (а-ля Predicates.equalTo (T t)) для равенства идентичности?

Я не нашел предиката идентичности-равенства , который я ожидал увидеть в com.google.common .base.Predicates , поэтому я придумал это. Я нашел его полезным для утверждений в модульных тестах о точном поведении коллекций (например, Multiset ). Это уже существует? Если нет, думаю, стоит, но, может быть, я что-то не рассматриваю?

/** @see Predicates#is(Object) */
private static class IsPredicate<T> implements Predicate<T>, Serializable {
  private final T target;

  private IsPredicate(T target) {
    this.target = target;
  }
  public boolean apply(T t) {
    return target == t;
  }
  @Override public int hashCode() {
    return target.hashCode();
  }
  @Override public boolean equals(Object obj) {
    if (obj instanceof IsPredicate) {
      IsPredicate<?> that = (IsPredicate<?>) obj;
      return target.equals(that.target);
    }
    return false;
  }
  @Override public String toString() {
    return "Is(" + target + ")";
  }
  private static final long serialVersionUID = 0;
}

/**
 * Returns a predicate that evaluates to {@code true} if the object being
 * tested {@code ==} the given target or both are null.
 */
public static <T> Predicate<T> is(T target) {
  return (target == null)
      ? Predicates.<T>isNull()
      : new IsPredicate<T>(target);
}
5
задан nezda 12 June 2011 в 18:24
поделиться