好吧,我从许多地方和消息来源得知,每当我覆盖equals()方法时,我都需要覆盖hashCode()方法.但请考虑以下代码
package test;
public class MyCustomObject {
int intVal1;
int intVal2;
public MyCustomObject(int val1, int val2){
intVal1 = val1;
intVal2 = val2;
}
public boolean equals(Object obj){
return (((MyCustomObject)obj).intVal1 == this.intVal1) &&
(((MyCustomObject)obj).intVal2 == this.intVal2);
}
public static void main(String a[]){
MyCustomObject m1 = new MyCustomObject(3,5);
MyCustomObject m2 = new MyCustomObject(3,5);
MyCustomObject m3 = new MyCustomObject(4,5);
System.out.println(m1.equals(m2));
System.out.println(m1.equals(m3));
}
}
Run Code Online (Sandbox Code Playgroud)
这里输出是真的,完全按照我想要的方式错误,我根本不关心覆盖hashCode()方法.这意味着hashCode()覆盖是一个选项而不是每个人都说的强制选项.
我想要第二次确认.