hashCode() 구현을 보고합니다.
그러한 액세스를 사용하면 hashCode()가 객체 수명 주기의 각기 다른 시점에 다른 결과를 반환할 수 있어 표준 컬렉션 클래스 사용 시 문제가 발생할 수 있습니다.
예:
class Drink {
String name;
Drink(String name) { this.name = name; }
@Override public int hashCode() {
return Objects.hash(name); // 경고
}
}
...
Drink coffee = new Drink("Coffee");
priceMap.put(coffee, 10.0);
coffee.name = "Tea";
double coffeePrice = priceMap.get(coffee); // 찾을 수 없음
필드를 final로 만드는 빠른 수정이 제안됩니다.
class Drink {
final String name;
...
}