问题描述
我正在尝试覆盖我的类 Vertex 的 equals() 方法。每个顶点都有一个字段 String source
。
如果参数 other_vertex 不是 Vertex 实例,我希望 equals() 返回 false。 如果参数 other_vertex 是一个 Vertex 实例,我想测试源字符串是否相等(默认 String equals(),如果真返回真,假返回假。
@Override
public boolean equals(Object other_vertex) {
if (!(other_vertex instanceof Vertex)) {
return false;
}
else {
return (this.getSourceString()).equals(other_vertex.getSourceString());
}
}
这给了我第 7 行的编译器错误“未定义对象类型的 getSourceString() 方法”。
getSourceString()
是为顶点正确定义的。
如何编写代码让编译器识别出只有 other_vertex
是顶点时才会执行?
解决方法
通知
public boolean equals(Object other_vertex) {
^^^^^^
您必须将 other_vertex
转换为 Vertex
才能访问该方法。
return (this.getSourceString()).equals(((Vertex)other_vertex).getSourceString());
这是安全的,因为您已经确定向下转换是有效的。