假设我有两个相同类的对象,例如:
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
的每个成员变量然后将其与{{进行比较1}}变量。
obj2
类的 equals
方法在此处不起作用,因为它会比较对象引用。
我的问题是,是否有任何Java API可以比较两个对象及其成员变量。
答案 0 :(得分:3)
@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;
}
将此等于函数粘贴到您的exmaple类中,然后比较这样的对象:
if(obj1.equals(obj2)) { //will return true now
}
答案 1 :(得分:1)
在Java中,有三种比较对象的替代方法: