public class Test { public static void main(String[] args) {
Object o = new Object(){
public boolean equals(Object obj){
return true;
}
};
Animal a = new Animal();
System.out.println(o.equals(a));
}
}
class Animal{
}
注意:这段代码没有重写hasCode(),但是执行返回的是true
但是scjp考试指南上明确的写着:“如果两个对象相等,则他们的hascode也必须相等,而Object类中的默认哈希码方法总是为每个对象产生一个唯一号,即使重写的equals()方法认为两个或多个对象相等也是这样”问题是:为什么执行结果和理论不相符合????谁能解释下
Object o = new Object(){
public boolean equals(Object obj){
return true;
}
};
Animal a = new Animal();
System.out.println(o.equals(a));
}
}
class Animal{
}
注意:这段代码没有重写hasCode(),但是执行返回的是true
但是scjp考试指南上明确的写着:“如果两个对象相等,则他们的hascode也必须相等,而Object类中的默认哈希码方法总是为每个对象产生一个唯一号,即使重写的equals()方法认为两个或多个对象相等也是这样”问题是:为什么执行结果和理论不相符合????谁能解释下
public boolean equals(Object arg0) {
//TODO Auto-generated method stub
return super.equals(arg0);
}@Override
public int hashCode() {
//TODO Auto-generated method stub
return super.hashCode();
}
方法,看楼主的代码明显的问题是方法中有方法,编译都有问题。