在有效的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;
}在这里,我无法得到特定的行,即((CaseInsensitiveString) o).s。现在,我从这段代码中了解到,对象'o‘是CaseInsensitiveString类的类型。现在).s是什么意思。
发布于 2017-10-26 13:28:01
类CaseInsensitiveString有一个类型为String的成员s。
要访问该成员,您需要
Object o将CaseInsensitiveString转换为((CaseInsensitiveString) o)s访问字段((CaseInsensitiveString) o).s。发布于 2017-10-26 13:28:05
您不能孤立地读取).s:
return s.equalsIgnoreCase(((CaseInsensitiveString) o).s); 就像:
CaseInsensitiveString c = (CaseInsensitiveString) o;
return s.equalsIgnoreCase(c.s);它只是从CastInsensitiveString实例中访问一个字段。
https://stackoverflow.com/questions/46955592
复制相似问题