为了账号安全,请及时绑定邮箱和手机立即绑定

org.apache.commons.lang3.builder.EqualsBuilder

org.apache.commons.lang3.builder.EqualsBuilder

烙印99 2019-03-01 10:40:57
static Set<Pair<IDKey, IDKey>> getRegistry() { return REGISTRY.get(); } static Pair<IDKey, IDKey> getRegisterPair(final Object lhs, final Object rhs) { final IDKey left = new IDKey(lhs); final IDKey right = new IDKey(rhs); return Pair.of(left, right); } /** * <p> * Returns <code>true</code> if the registry contains the given object pair. * Used by the reflection methods to avoid infinite loops. * Objects might be swapped therefore a check is needed if the object pair * is registered in given or swapped order. * </p> * * @param lhs <code>this</code> object to lookup in registry * @param rhs the other object to lookup on registry * @return boolean <code>true</code> if the registry contains the given object. * @since 3.0 */ static boolean isRegistered(final Object lhs, final Object rhs) { final Set<Pair<IDKey, IDKey>> registry = getRegistry(); final Pair<IDKey, IDKey> pair = getRegisterPair(lhs, rhs); final Pair<IDKey, IDKey> swappedPair = Pair.of(pair.getLeft(), pair.getRight()); return registry != null && (registry.contains(pair) || registry.contains(swappedPair)); } 上面是 org.apache.commons.lang3.builder.EqualsBuilder 的源码。 注释说对象注册的时候顺序可能发生交换,所以要检测交换顺序后的 Pair,但是 pair 和 swappedPair 中对象的顺序并没有交换呀。那有什么意义呢?还是源码错了?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信