假设我有两个相同类的对象,例如:
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
方法在这里不起作用,因为它比较对象引用。
我的问题是,是否有任何Java API可以比较两个对象及其成员变量。
@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;
}
将此等于函数粘贴到示例类中,然后像这样比较对象:
if(obj1.equals(obj2)) { //will return true now
}
在Java中,有三种比较对象的选择:
- 通过重写 Object.equals() 方法。
- 使用 Generic java.util.Comparator 接口
- 使用 java.lang.Comparable 接口
查看此问题和此链接以获取更多详细信息。