Java 是否有任何方法可以获取字段未被';使用EqualBuilder不等于

Java 是否有任何方法可以获取字段未被';使用EqualBuilder不等于,java,apache-commons,Java,Apache Commons,在使用EqualBuilder时,有没有办法获取导致不平等的字段和相应值 @Override public boolean equals(Object o) { Meeting meeting = (Meeting) o; EqualsBuilder equalsBuilder = new EqualsBuilder(); return equalsBuilder.append(basicMeetingInformation, meeting.ba

在使用EqualBuilder时,有没有办法获取导致不平等的字段和相应值

@Override
    public boolean equals(Object o) {
    Meeting meeting = (Meeting) o;
    EqualsBuilder equalsBuilder = new EqualsBuilder();
            return equalsBuilder.append(basicMeetingInformation, meeting.basicMeetingInformation).append(subject, meeting.subject)
                    .append(emailParticipants, meeting.emailParticipants).append(ownerEmail, meeting.ownerEmail).append(timeZone, meeting.timeZone)
                    .append(start, meeting.start).append(end, meeting.end).append(notes, meeting.notes).append(recurrence, meeting.recurrence)
                    .append(recurrenceEnd, meeting.recurrenceEnd).append(recurrentInstanceId, meeting.recurrentInstanceId)
                    .append(scheduledMeetingRooms, meeting.scheduledMeetingRooms).isEquals();
}

不,您可以轻松地拥有一个自定义扩展名(带有一个额外的(字符串)参数,如:
myAppend(tlhs,trhs,字符串名)
)。但基于
EqualsBuilder
(,一旦检测到不平等,就会停止比较),您只能得到第一个字段和值,这违反了公式,如:

import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.lang3.builder.EqualsBuilder;

public class MyEqualsBuilder extends EqualsBuilder {

    private final Map<String, Object> violatedFieldValues = new TreeMap<>();

    /**
    * @param name - the name of appended property.
    * @see #append
    **/
    public <T> EqualsBuilder myAppend(T lhs, T rhs, String name) {
        assert (null != name);
        append(lhs, rhs);
        if (violatedFieldValues.isEmpty() && !isEquals()) {
            violatedFieldValues.put(name, rhs);
        }
        return this;
    }

    /** 
    * Gets the Map of field name to (right hand) value,
    * which first violated the equality of this equals builder.
    * Contains 0 - 1 entries.
    **/  
    public Map<String, Object> getViolatedFieldValues() {
        return violatedFieldValues;
    }

}
import java.util.Map;
导入java.util.TreeMap;
导入org.apache.commons.lang3.builder.EqualsBuilder;
公共类MyEqualBuilder扩展了EqualBuilder{
私有最终映射violatedFieldValues=新树映射();
/**
*@param name-附加属性的名称。
*@see#追加
**/
公共EqualBuilder myAppend(T lhs、T rhs、字符串名){
断言(null!=名称);
附加(左侧、右侧);
if(violatedFieldValues.isEmpty()&&!isEquals()){
violatedFieldValues.put(名称,rhs);
}
归还这个;
}
/** 
*获取字段名到(右侧)值的映射,
*这首先违反了这个平等的建设者的平等性。
*包含0-1个条目。
**/  
公共地图getViolatedFieldValues(){
返回ViolatedFieldValue;
}
}