Java 比较对象及其成员变量

Java 比较对象及其成员变量,java,jakarta-ee,compare,Java,Jakarta Ee,Compare,假设我有两个相同类的对象,例如: public class Example { String name; String rollNo; String address; String phoneNo; String city; } Example obj1 = new Example(); obj1.name = "Name"; obj1.rollNo = "10"; obj1.address = "Address"; ob

假设我有两个相同类的对象,例如:

public class Example {
    String name;
    String rollNo;
    String address;
    String phoneNo;
    String city;
}

Example obj1 = new Example();
    obj1.name = "Name";
    obj1.rollNo = "10";
    obj1.address = "Address";
    obj1.phoneNo = "Phone Number";
    obj1.city = "City";

Example obj2 = new Example();
    obj2.name = "Name";
    obj2.rollNo = "10";
    obj2.address = "Address";
    obj2.phoneNo = "Phone Number";
    obj2.city = "City";
这里我想将
obj1
obj2
进行比较,关键是我不想在if条件下这样做,即获取
obj1
的每个成员变量,然后将其与
obj2
变量进行比较

equals
类的
java.lang.Object
方法在这里不起作用,因为它比较对象引用

我的问题是,是否有任何JavaAPI可以比较两个对象及其成员变量

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Example other = (Example) obj;
        if (address == null) {
            if (other.address != null)
                return false;
        } else if (!address.equals(other.address))
            return false;
        if (city == null) {
            if (other.city != null)
                return false;
        } else if (!city.equals(other.city))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (phoneNo == null) {
            if (other.phoneNo != null)
                return false;
        } else if (!phoneNo.equals(other.phoneNo))
            return false;
        if (rollNo == null) {
            if (other.rollNo != null)
                return false;
        } else if (!rollNo.equals(other.rollNo))
            return false;
        return true;
    }
将此equals函数粘贴到exmaple类中,然后比较如下对象:

 if(obj1.equals(obj2)) {  //will return true now

 }
将此equals函数粘贴到exmaple类中,然后比较如下对象:

 if(obj1.equals(obj2)) {  //will return true now

 }

在Java中,有三种方法可以比较对象:

  • 通过重写Object.equals()方法
  • 使用通用接口
  • 使用接口

  • 检查此项,并链接以了解更多详细信息。

    在Java中,有三种方法可用于比较对象:

  • 通过重写Object.equals()方法
  • 使用通用接口
  • 使用接口

  • 检查此项,并链接以了解更多详细信息。

    您必须在示例类中重写equals。您可以重写equals方法。感谢您的快速回复,但重写不会解决我的问题。实际上,我正在寻找Java API,它可以做到这一点。“重写不会解决我的问题”。为什么不呢?对于不能通过重写
    equals
    来实现的API,您需要什么?实际上@PakkuDon如果我重写
    equals
    方法,那么我必须编写if条件,如果类中有20个成员变量,那么我必须编写20个
    if
    条件,实际上,我想避免出现
    if
    条件。您必须在示例类中重写equals。您可以重写equals方法。感谢您的快速回复,但重写并不能解决我的问题。实际上,我正在寻找Java API,它可以做到这一点。“重写不会解决我的问题”。为什么不呢?你需要从一个不能通过重写
    equals
    来完成的API中得到什么?实际上@PakkuDon如果我重写
    equals
    方法,那么我将不得不编写if条件,如果一个类中有20个成员变量,那么我将不得不编写20个
    if
    条件,实际上我想避免
    if
    条件。谢谢Kai,事实上,问题陈述仍然是一样的,我正在寻找一些Java API,假设我的成员变量增加,那么我将不得不编写更多的
    如果
    条件,这实际上是我想要避免的。没有API。对于每个成员,都无法避免if条件。只有一个api可以在添加新成员时更新equals方法。谢谢Kai,事实上问题陈述保持不变,我正在寻找一些Java api,假设我的成员变量增加,那么我将不得不编写更多我想要避免的
    条件。没有api。对于每个成员,都无法避免if条件。只有一个api可以在添加新成员时更新equals方法。