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

我有两个类型为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())行的目的是什么?

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