java - Guava 是否为身份平等提供 Predicates.is(T) (a la Predicates.equalTo(T t))?

标签 java guava

我没有找到恒等式 Predicate我预计在 com.google.common.base.Predicates所以我把它搞砸了。我发现它对于单元测试中关于集合的精确行为的断言很有用(例如 Multiset<T> )这已经存在了吗?如果不是,我认为应该,但也许有一些我没有考虑的事情?

/** @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);
}

最佳答案

不,它不是,它也在 idea graveyard 中作为不会完成的事情 (Predicates.sameAs)。我想这或多或少是出于 Mark Peters 给出的原因。

关于java - Guava 是否为身份平等提供 Predicates.is(T) (a la Predicates.equalTo(T t))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323713/

相关文章:

java - 一个bean在Spring中有可能有多个 parent 吗?

java - 在 Java 中,如何使用 Google 的 guava CharStreams.toString 进程中的 inputStream?

spring-boot - Spring Boot/Gradle/Querydsl项目有相同的依赖依赖不同版本的另一个依赖

java - 创建具有不同 Intent 的多个通知

java - 具有负载平衡扩展的 OSGi 扩展器模式

java - 通配符类型到参数化类型

java - 是否有与 Javascript 的 "some"方法等效的 Java?

java - 是否可以使用 Guava 链接异步调用?

java - Spring Data JPA - 如何通过父对象的 id 查找嵌套对象?

java - 如何模拟其实例作为参数传递的类的非静态方法?