首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guava是否为身份平等提供了Predicates.is(T) (a la Predicates.equalTo(T t))?

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

Stack Overflow用户
提问于 2011-06-13 02:24:33
回答 1查看 966关注 0票数 5

我没有在com.google.common.base.Predicates中找到我期望的身份平等Predicate,所以我匆忙编写了这篇文章。我发现在单元测试中关于集合(例如,Multiset<T>)的精确行为的断言很有用。这已经存在了吗?如果不是,我认为它应该是,但也许有一些我没有考虑到的东西?

代码语言:javascript
复制
/** @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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-13 06:20:56

不,它没有,而且它也在idea graveyard中作为不会被做的东西(Predicates.sameAs)。我想这或多或少是因为Mark Peters给出的原因。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6323713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档