我一直在学习“用Java思考”。我找到了以下代码:

class SetType {
  int i;
  public SetType(int n) { i = n; }
  public boolean equals(Object o) {
    return o instanceof SetType && (i == ((SetType)o).i);
  }
  public String toString() { return Integer.toString(i); }
}


我不明白这是怎么做的:

i == ((SetType)o).i


我知道Object o被强制转换为SetType,但是关于“ .i”呢?
如果有人明白这是什么意思,那就好了。

最佳答案

这段代码:


  public boolean equals(Object o) {
    return o instanceof SetType && (i == ((SetType)o).i);
  }



是用相同的方式写同样的东西的简短形式:

public boolean equals(Object o) {
    if (o instanceof SetType) {
        SetType other = (SetType) o;
        if (i == other.i) {
            return true;
        }
    }
    return false;
}


希望您会更容易理解。您可以简化此代码以获取原始代码。它们是等效的。

10-06 01:48