有效Java示例中[[CaseInsensitiveString)o).s的含义

Nav*_*Ali 1 java

我在有效的Java中经历了“相等”方法的概念,然后在下面找到了以下代码:

@Override
public boolean equals(Object o) {
    if (o instanceof CaseInsensitiveString)
        return s.equalsIgnoreCase(((CaseInsensitiveString) o).s);
    if (o instanceof String)  // One-way interoperability!            
        return s.equalsIgnoreCase((String) o);
    return false;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我无法获得特定的行((CaseInsensitiveString) o).s。现在,我从这段代码中了解到的是对象“ o”被类型转换为CaseInsensitiveStringClass。现在是什么).s意思。

And*_*ner 5

您无法).s孤立阅读:

return s.equalsIgnoreCase(((CaseInsensitiveString) o).s); 
Run Code Online (Sandbox Code Playgroud)

就好像:

CaseInsensitiveString c = (CaseInsensitiveString) o;
return s.equalsIgnoreCase(c.s);
Run Code Online (Sandbox Code Playgroud)

它只是从的实例访问字段CastInsensitiveString

  • OP 对 `.s` 含义的混淆是一个很好的例子,说明为什么你从来没有像 `s` 这样的名字的公共成员。如果它是一个更有意义的名字,它可能会更明显。 (2认同)