Your hashcode
should use the same set of properties as equals
for it not to break the contract.
Just use the Arrays.hashcode
as done in Foo2
Also you dont have to loop through each element in your equals you can just use Arrays.equals
Foo2 equals can look like this similar to Foo1.equals
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Foo1 other = (Foo1) obj;
if (!Arrays.equals(foo2_array, other.foo2_array))
return false;
return true;
}
and hashcode similar to Foo1 hashcode
@Override
public int hashCode() {
return Arrays.hashCode(foo2_array);
}
Also while implementing equals do check for same reference and object validity for null.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…