gpt4 book ai didi

java - Lombok @Data 是否会覆盖现有的 toString 和 hashCode 方法?

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

最近我们开始在我们的项目中使用 Lombok 特性。我们为 Domain 对象添加了 @Data 注释,这是由于 Lombok api 提供的 hashCode() 方法抛出了一些异常。后来,当我添加 @Setter@Getter 而不是 @Data 时,我没有发现任何问题。

问题 1:Lombok @Data 是否覆盖类中现有的方法,如 hashCode()toString()?

问题2:为什么hashCode()会在这里出问题?

最佳答案

是的,@Data 意味着 @EqualsAndHashCode@ToString。参见 the @Data documentation .

生成的hashCode()方法会调用所有字段的hashCode方法。因此,如果其中一个字段的值抛出异常,那么它也会抛出异常。

另一种情况是您有循环对象引用:如果一个对象的字段包含一个对象,该对象的字段引用第一个对象,则调用 hashCode 方法将触发 StackOverflow。

披露:我是 Lombok 开发人员之一。

关于java - Lombok @Data 是否会覆盖现有的 toString 和 hashCode 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26625798/

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