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中,有三种方法可以比较对象:
检查此项,并链接以了解更多详细信息。在Java中,有三种方法可用于比较对象:
检查此项,并链接以了解更多详细信息。您必须在示例类中重写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方法。