Нет, вы можете легко иметь собственное расширение (с 1 дополнительным (String) параметром, например: myAppend(T lhs, T rhs, String name)
). Но на основе EqualsBuilder
( он достаточно интеллектуален и перестает сравнивать, как только обнаруживается неравенство), вы можете получить только поле и значение first , которое нарушает уравнение, например:
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;
}
}