当前位置: 首页 > 面试题库 >

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

司徒鸿文
2023-03-14
问题内容

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

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

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

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


问题答案:

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



 类似资料:
  • 问题内容: 我得到的错误就在这行 。 该怎么办?其他逻辑还可以吗? 我想做的是有一个A列表和一个B列表,其中一个属性与id相同;尽管变量名不同。即在和在B。现在我将两个列表都放在ListAll中,并在相同的变量id / bid上对它们进行排序。我有A和B实现可比性。 和我的listAll是对象类型? 我该怎么做?谢谢。 问题答案: 您可以添加一个通用基类并在那里进行比较,如下所示:

  • 问题内容: 我需要编写一个比较器,它采用类型A的对象A和类型B的对象B。这两个对象不是公共对象的扩展。它们的确不同,但是我需要通过其中的通用字段来比较这两个对象。我必须使用比较器接口,因为对象存储在Set中,并且在必须对CollectionUtils执行操作之后。我在Google上搜索了一下,发现了Comparator的解决方案,但只有相同的类型。 我试图朝这个方向实施思考,但是我不知道我是否在正

  • 我需要写一个比较器,取一个a类型的对象a和一个B类型的对象B。这两个对象不是一个公共对象的扩展。他们确实是不同的,但我需要比较这两个对象在它的共同领域。我必须使用比较器接口,因为对象存储在Set中,之后我必须使用CollectionUtils进行操作。我搜索了一点点,我用比较器找到了解决方案,但只有相同的类型。 TXS 附注:我在不同的集合中添加两个对象: 之后我会这样想:

  • 我有两个对象类Person和Employee。两个类都有共同的属性年龄。我已经在Arraylist中添加了这两个类的几个对象,现在我需要两个,写一个比较器,并将其传递给集合类的sort方法。并希望列表按年龄排序。我尝试这样做只是为了更清楚地使用Java中的carparable和Comparator。 编辑:我问这个问题的原因是我不清楚比较者和可比性。我在某个地方读到,如果类实现了可比较的,那么它就

  • 问题内容: 我必须将对象与预定义类的列表进行比较。 使用安全还是应该使用? 注意: 我不能使用,我没有对象,我只有对象。在这种情况下,我会像枚举一样使用它! 问题答案: 不会覆盖来自的方法,该方法是这样实现的: 因此与(除非为null)相同。

  • 我正在尝试创建一个二进制搜索程序,该程序可以使用各种类型的变量(int、float、string等)来查看数组中是否存在元素。我正试图找出如何比较变量。下面是我正在使用的内容的草图: 我甚至不确定使用对象是否是最好的方法。