고유 ID로 final String 클래스가 있습니다. 물론 equals를 재정의하려고하므로 비교는 ID에만 기반합니다. 아래와 같이 ID의 해시 코드를 반환하는 것이 올바른 방법입니까?클래스에 대한 클래스 멤버의 해시 코드를 사용할 수 있습니까?
class ItemSpec{
final String name;
...
@Override
public boolean equals(Object o){
if(o != null && o instanceof ItemSpec){
return name.equalsIgnoreCase(((ItemSpec)o).name);
} else{
return false;
}
}
@Override
public int hashCode(){
if(name == null){
return 0;
} else{
return name.hashCode();
}
}
}
예, 그것은 괜찮습니다 .. –
주 당신의 'equals' 메쏘드는'name'이 널이 아니라고 가정합니다. 그러나'hashCode' 메쏘드는 그것을 가정합니다. 무엇 이니? –
@JonSkeet 죄송합니다. 추가 한 후에 나타났습니다. 편집 됨. – NoMercyIncluded