我打算覆盖我的Pair类中的boolean equals(Object otherObject)
方法,该方法利用私有内部类和私有实例变量,如下所示:
class Pair
{
class Node
{
private int x, y;
}
public boolean equasl(Object otherObject)
{
if(otherObject == null)
{
return false;
}
else if(getClass() != otherObject.getClass())
{
return false;
}
else
{
Pair other = (Pair)otherObject;
return (x.equals(otherObject.x) && y.equals(otherObject.y));
}
}
}
我不清楚如何比较两个Pair
对象,其中每个对象由一个双向链表组成(为清楚起见未显示)。我是否比较了从头节点开始并遍历列表的每个对象,以验证列表中的每个节点是否相等?
答案 0 :(得分:1)
Pair类使用equals将其值与另一对进行比较,而不是双向链表。它接受一个Pair对象的对象,然后检查null和classtype,最后比较另一个对象内的Node类的x和y值。
答案 1 :(得分:-1)
假设您有一个实例变量Node n
,它是内部类的一个实例。我建议稍微重构你的equals方法:
public boolean equals(Object other) {
if (other == null)
return false;
if (! other instanceof Pair)
return false;
...
}
除此之外,您需要在结构上比较每个类内部的Node实例。由于这些是Node上的私有变量,因此您无法访问other
。定义get方法然后只比较整数可能会有所帮助。
这是一般的覆盖等于
的好指南