log4j AbstractFilter.equals() 似乎做对象标识等于

log4j AbstractFilter.equals() appears to do Object identity equals

最近将 log4j 从 2.1 更新到 2.2,我们的一项比较两个过滤器的测试失败了。似乎原因是旧版本检查(最终)是否有几个过滤器的 ivars 在 AbstractFilter 中匹配(在通过 AbstractLifeCycle equals 方法之后)但是在新版本中 AbstractLifeCycle 没有 equals() 所以它去到 Object.equals() 这当然会因不同的实例而失败。

我是不是错过了什么或者这是一个错误?

我们特意从 AbstractLifeCycle 中删除了 equals 实现,因为超类无法知道相等对所有子类意味着什么。有关详细信息,请参阅 https://issues.apache.org/jira/browse/LOG4J2-891

子类应该自己实现 equals() 和 hashCode()。对于给您带来的不便,我们深表歉意。