Java 由Eclipse:getOuterType()生成的等于()?

Java 由Eclipse:getOuterType()生成的等于()?,java,eclipse,Java,Eclipse,我有两个类型为double的简单类点。我要求Eclipse3.6为它生成equals()和hashCode()。equals()方法如下所示: @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) r

我有两个类型为
double
的简单类点。我要求Eclipse3.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;
}
private Point getOuterType() {
    return Point.this;
}
getOuterType
如下所示:

@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;
}
private Point getOuterType() {
    return Point.this;
}

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

如果类是内部类(非静态嵌套类),那么它有一个外部的封闭实例。内部类类型的两个对象并不真正相等,除非封闭实例也相等;外部实例就像一个隐藏字段(通常由
javac
命名为
this$0
)。

Eclipse似乎认为它是一个内部类。否则它将不会生成
getOuterType
方法。谢谢,克里斯!这个问题实际上来自我的学生,似乎他真的把他的班级放在了其他班级里。(我不能在我的电脑上复制这个,直到在你回答完问题后把课堂放进另一个教室。)我也在想同样的事情。在检查OuterType之前,代码检查两个实体的类是否相同。如果您知道这些类是相同的,为什么还要检查外部类型呢?这不是多余的吗?您知道外部类型是相同的,因为“内部”类型是相同的。@勾选外部类型是相同的,但外部实例(这是
getOuterType
返回的)不一定相同。这就是比较的目的。啊。。好了。因此getOuterType()是一个非常糟糕的命名选择。它应该是“getOuterInstance()”或类似的名称。谢谢,克里斯。事实证明我有,谢谢,问题解决了。