gpt4 book ai didi

java - 所有实例都相等的类的 HashCode 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:45 26 4
gpt4 key购买 nike

假设我有一个所有实例都被视为相等的类。一个典型的用例是没有任何状态但仅作为函数运行的类。

public class ToStringFunction implements Function<Object, String> {

@Override
public String apply(Object o) {
return o.toString();
}

@Override
public boolean equals(Object o) {
return o instanceof ToStringFunction;
}
}

现在,应该如何实现 hashCode 方法?自然地,它需要是一个常量值才能遵守 equals/hashCode 契约。但是那应该是什么值呢?如果使用了一些微不足道的值,例如 0 或 1,它可能会导致与其他类似类的冲突。

所以这似乎归结为一个问题:如何实现一个哈希码,它对于给定的类可能是唯一的,但对于它的所有实例都是一样的

我想到了这两个想法。你怎么看,他们是理智的吗?

@Override
public int hashCode() {
return ToStringFunction.class.hashCode();
}

@Override
public int hashCode() {
return "ToStringFunction".hashCode();
}

最佳答案

如果一个类没有状态,它应该是单例、抽象类或静态方法库(如 Math)。因此,为它覆盖 equals 和 hashcode 是没有意义的。

关于java - 所有实例都相等的类的 HashCode 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21985329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com