Java 是否有任何方法可以获取字段未被';使用EqualBuilder不等于
在使用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
@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;
}
}