比较对象及其成员变量



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

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";

在这里,我想将obj1obj2进行比较,问题是我不想使用 if 条件执行此操作,即获取obj1的每个成员变量,然后将其与obj2变量进行比较。

equalsjava.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中,有三种比较对象的选择:

  1. 通过重写 Object.equals() 方法。
  2. 使用 Generic java.util.Comparator 接口
  3. 使用 java.lang.Comparable 接口

查看此问题和此链接以获取更多详细信息。

相关内容

  • 没有找到相关文章

最新更新