jhl*_*u87 13 java types equals
我正在阅读一本关于数据结构的书.目前我在图表上,下面的代码是图表的顶点部分.
class Vertex<E>{
//bunch of methods
public boolean equals(Object o){
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试实现这个equals方法时,我的编译器抱怨没有检查参数的类型,只是允许任何对象被发送.对我来说,为什么该参数不应该是Vertex而不是Object,这似乎有点奇怪.有没有理由为什么作者这样做或者这是一个错误或过时的例子?
Eng*_*uad 15
@Override
public boolean equals(Object obj)
{
if(obj == null) return false;
else if (!(obj instanceof Vertex)) return false;
else return // blah blah
}
Run Code Online (Sandbox Code Playgroud)
Jea*_*sky 10
equals(Object)是root - Object中定义的方法.如果您不完全匹配签名,则当有人检查两个对象是否相等时,将调用Object的版本.不是你想要的.
你可能已经看过其他方法(如比较器),你可以使用确切的时间.那是因为这些API与Java 5是通用的.等于不能是因为用两种不同类型调用equals是有效的.它应该返回false,但它是有效的.