该设置,java 8使用lombok,meanbean和均衡器(所有3的超级粉丝,也限制在我可以使用的版本每co。政策-关于平等验证者2.3.3的政策):
@Data
@NoArgsConstructor
class A {...}
@Data
@NoArgsConstructor
class B extends class A {...}我得到了调用EqualsVerifier的重要字段错误:
EqualsVerifier.forClass(B.class)
.withRedefinedSuperclass()
.suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS, Warning.INHERITED_DIRECTLY_FROM_OBJECT).verify();按以下方式更改了B类,得到了重新定义的超类错误:
@NoArgsConstructor
@ToString(callSuper=false)
class B extends class A {...}再次按以下方式更改了B类,并得到了重要字段错误:
@NoArgsConstructor
@ToString(callSuper=false)
@EqualsAndHashCode(callSuper=false)
class B extends class A {...}有什么建议吗?我不知道怎么通过这个。
发布于 2018-10-21 14:39:24
这里是EqualsVerifier的创造者。
我没有足够的信息来帮助你- A和B有哪些领域?另外,我不确定是否可以继承Lombok的@Data;您必须检查它们的文档或运行一些实验。
也就是说,正确地将equals与继承结合起来是很难做到的。我通常给人们的建议是,不要这样做。如果有必要的话,我已经在EqualsVerifier手册上写了一些关于它的文章。我还建议阅读这篇文章获得一些背景信息。
作为一般的经验法则:
equals方法并打算添加状态,请始终在它们中调用超级。final。在这种情况下,B可能是最终的,这将使您更容易安抚EqualsVerifier。https://stackoverflow.com/questions/52875514
复制相似问题