You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dmitry Katsubo (Jira)" <ji...@apache.org> on 2023/04/21 02:18:00 UTC
[jira] [Created] (LANG-1696) Add support of java collections to EqualsBuilder
Dmitry Katsubo created LANG-1696:
------------------------------------
Summary: Add support of java collections to EqualsBuilder
Key: LANG-1696
URL: https://issues.apache.org/jira/browse/LANG-1696
Project: Commons Lang
Issue Type: Improvement
Components: lang.builder.*
Reporter: Dmitry Katsubo
Provided that new {{HashSet<>().equals(Collections.emptySet())}} it would be great if {{EqualsBuilder}} also supports that. Currently it checks that [left/right classes are subclasses of each other|https://github.com/apache/commons-lang/blob/master/src/main/java/org/apache/commons/lang3/builder/EqualsBuilder.java#L499], however that does not hold for collections.
Suggestion: if either left or right is {{Collection}} or {{Map}} then delegate equals to
{code}
public EqualsBuilder reflectionAppend(final Object lhs, final Object rhs) {
if (!isEquals()) {
return this;
}
if (lhs == rhs) {
return this;
}
if (lhs == null || rhs == null) {
setEquals(false);
return this;
}
if (lhs instanceof Collection || rhs instanceof Collection || lhs instanceof Map || rhs instanceof Map) {
setEquals(lhs.equals(rhs));
return this;
}
...
{code}
Likely this mode should be additionally controlled (switched on/off), as strictly speaking, it won't be a reflection tree walker starting from that field.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)