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)