小编典典

比较Java中不同类的对象字段

java

我有两个对象,每个对象都有数十个字段:

Class1 {
    int firstProperty;
    String secondProperty;
    ...
}

Class2 {
    int propertyOne;
    String propertyTwo;
    ...
}

尽管某些字段的名称不同,但是它们应该具有相同的含义和目的,例如firstPropertypropertyOne。我想比较两个类的对象的“相似”字段实际上是否具有相同的值。最优雅的方法是什么?


阅读 450

收藏
2020-11-30

共1个答案

小编典典

如果有两个类的字段具有相似的含义,则可以考虑声明一个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被覆盖的风险-确保它永远不会发生。

2020-11-30