Java等于覆盖

时间:2013-12-07 21:00:21

标签: java equals doubly-linked-list

我打算覆盖我的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对象,其中每个对象由一个双向链表组成(为清楚起见未显示)。我是否比较了从头节点开始并遍历列表的每个对象,以验证列表中的每个节点是否相等?

2 个答案:

答案 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方法然后只比较整数可能会有所帮助。

这是一般的覆盖等于

的好指南

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC0QFjAA&url=http%3A%2F%2Fwww.seas.upenn.edu%2F~cis120%2F13fa%2Flectures%2Flec32.pdf&ei=TI6jUvLTBeeysQSZxoGQCA&usg=AFQjCNFWIq0POyO5CGD7jCTbmKxlYyU5iQ&bvm=bv.57752919,d.cWc