我有两个相似的类,每个类都有一个相同类型的单个字段。
class Fruit {
private final String name;
}
class Vegetable {
private final String name;
}
我想为每个人实施hashCode()
。我的问题是,在我的情况下,名称之间的冲突比使用" apple"更有可能。和"胡萝卜,"它们可能都在同一个Map / Set中。我想知道实现hashCode最清晰的方法来处理这个问题。
到目前为止,我已经考虑过Objects.hash(this.getClass(), name)
,Objects.hash(<some int unique to this class>, name)
。我喜欢第一个只是因为它比第二个更自我记录和强大,但它不是我在野外看到的模式。我也考虑过<some prime int unique to this class> * Objects.hashCode(name)
,但这感觉很脆弱,特别是如果添加了新的字段。