比较Java中不同类的对象字段
我有两个对象,每个对象都有数十个字段:
Class1 { int firstProperty;
String secondProperty;
...
}
Class2 {
int propertyOne;
String propertyTwo;
...
}
尽管某些字段的名称不同,但是它们应该具有相同的含义和目的,例如firstProperty
和propertyOne
。我想比较两个类的对象的“相似”字段实际上是否具有相同的值。最优雅的方法是什么?
回答:
如果有两个类的字段具有相似的含义,则可以考虑声明一个interface
。
Class1 implements MyInterface { int firstProperty;
String secondProperty;
...
int getOne() {
return firstProperty;
}
String getTwo() {
return secondProperty;
}
}
Class2 implements MyInterface {
int propertyOne;
String propertyTwo;
...
int getOne() {
return propertyOne;
}
String getTwo() {
return propertyTwo;
...
}
并且interface
具有默认实现isEqualTo
:
MyInterface { int getOne();
String getTwo();
...
boolean isEqualTo(MyInterface that) {
return that != null &&
this.getOne() == that.getOne() &&
this.getTwo().equals(that.getTwo()) && //add null checks!
...;
}
}
有isEqualTo
被覆盖的风险-确保它永远不会发生。
以上是 比较Java中不同类的对象字段 的全部内容, 来源链接: utcz.com/qa/399907.html