두 필드를 비교하기 위해 클래스의 equals 메소드를 오버라이드하고 있습니다. 2 개의 객체가 동일하지 않은 경우, 어느 객체가 불균등 해지기 때문에 어느 필드가 불등인가 어떤가를 조사하는 방법이 존재합니까?equals를 오버라이드하고 어떤 필드가 같지 않은지 확인
3
A
답변
2
각 데이터 멤버에 대해 차이나 null이있는 동일한 유형의 개체를 반환하는 클래스에 메서드를 작성할 수 있습니다. 또는 당신을위한 도서관을 찾을 수 있습니다. 필드이 같은 정보를 strore하는 클래스를 작성 http://javers.org
+0
이미 Javers를 시도했습니다. 그것은 버기입니다. 나를 위해 제대로 작동하지 않았다. – Ava
0
시도 (또는 Map
사용) : 등호의 다음
class FieldsContainer<F,V>{
private F field;
private V value;
public FieldsContainer(F field, V value) {
this.field = field;
this.value = value;
}
public FieldsContainer(){}
public F getField() {
return field;
}
public void setField(F field) {
this.field = field;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
과() :
public boolean equals(Object obj) {
...
} else if (!field1.equals(other.field1)){
fieldsContainer=new FieldsContainer("fieldName1", field1);
return false;
}
if (field2 != other.field2){
fieldsContainer=new FieldsContainer("fieldName2", field2);
return false;
}
fieldsContainer=null;
return true;
}
메인에서을 :
if(!obj1.equals(obj2)){
fieldsContainer.getField();
fieldsContainer.getValue();
//Your stuff
}
가능한 경우 어떻게 알리시겠습니까? 당신이하는 일은'equals (Object)'를 호출하는 것뿐입니다. –
그래서 두 번 호출하려고합니다. 만약 equals가 false를 반환한다면, 동등하지 않은 것을 접근하려고 시도하십시오. 동시에, 각 필드가 동등한 지 아닌지를 확인하고 싶지 않습니다. 그냥 기존의 기능이 있는지 궁금해, 그렇지 않으면 내가 방법을 수정합니다. – Ava
알기를 원하는 것 : 필드 이름 또는 다른 것? –