Eclipse生成的equals():getOuterType()?

时间:2010-10-03 16:41:03

标签: java eclipse

我有两个类型double的简单类Point。我让Eclipse 3.6为它生成equals()hashCode()equals()方法如下所示:

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Point other = (Point) obj;
    if (!getOuterType().equals(other.getOuterType()))
        return false;
    if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
        return false;
    if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
        return false;
    return true;
}

getOuterType看起来像这样:

private Point getOuterType() {
    return Point.this;
}

所以问题是:getOuterType().equals(other.getOuterType())行的目的是什么?

1 个答案:

答案 0 :(得分:13)

好吧,如果你的类是一个内部类(非静态嵌套类),它有一个外部的封闭实例。除非封闭实例相等,否则内部类类型的两个对象实际上并不相等;外部实例类似于隐藏字段(通常由this$0命名为javac。)