我想要一种方法来覆盖具有循环引用的类的 equals 方法。下面是我的课程编辑:删除了 getter 和 setter 的代码
class Person implements Serializable{
private String fullName;
private Person friend;
// Getters and setters
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (friend == null) {
if (other.friend != null)
return false;
} else if (!friend.equals(other.friend))
return false;
if (fullName == null) {
if (other.fullName != null)
return false;
} else if (!fullName.equals(other.fullName))
return false;
return true;
}
}
在客户端类中,我有以下内容:
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
p1.setFullName("nkuruza");
p2.setFullName("Another");
p3.setFullName("nkuruza");
p3.setFriend(p2);
p1.setFriend(p2);
p2.setFriend(p1);
问题是在这种情况下调用 equals 方法,例如 p1.equals(p3) 会产生 StackOverflowException。
如何在不必遇到此问题的情况下实现我的 equals 方法?
我提前谢谢你。
当年话下
撒科打诨
相关分类