gpt4 book ai didi

java - 您是否需要重写hashCode()和equals()进行记录?

转载 作者:行者123 更新时间:2023-12-01 07:53:20 25 4
gpt4 key购买 nike

假设以下示例:

public record SomeRecord(int foo, byte bar, long baz)
{ }

如果要将上述对象添加到 hashCode中,是否需要覆盖 equalsHashMap

最佳答案

不,您不需要定义自己的hashCodeequals。如果您希望覆盖默认实现,则可以这样做。

有关详细信息,请参见规范的8.10.3节。

请特别注意,请注意实现自己的版本:

All the members inherited from java.lang.Record. Unless explicitly overridden in the record body, R has implicitly declared methods that override the equals, hashCode and toString methods from java.lang.Record.

Should any of these methods from java.lang.Record be explicitly declared in the record body, the implementations should satisfy the expected semantics as specified in java.lang.Record.



特别是,自定义 equals实现必须满足预期的语义,即记录的副本必须等于该记录。这通常不适用于类(例如,即使 Car字段不同,两个 equals对象的 VIN值相同也可能是 owner),但对于记录必须为true。这种限制意味着几乎没有任何理由可以覆盖 equals

关于java - 您是否需要重写hashCode()和equals()进行记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61719589/

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