- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用@EqualsAndHashCode 扩展父类的类。我在使用 Lombok 1.16.0 和 Java 8 时遇到编译错误
@EqualsAndHashCode(doNotUseGetters = true, of = { "propertyA", "propertyB"})
公开课父级{...}
@EqualsAndHashCode(callSuper = true, doNotUseGetters = true, of = { "propertyC", "propertyD"})
公共(public)课 Child extends Parent {...}
错误是...
[错误] 无法在项目 granger 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile):编译失败
[错误]/Users/sarah/src/main/java/com/xxx/Child.java:[26,1] com.xxx.Child 中的 canEqual(java.lang.Object) 无法覆盖 canEqual(java. com.yyy.Parent 中的 lang.Object)
[错误] 试图分配较弱的访问权限;是公开的
关于继承和我正在滥用的@EqualsAndHashCode 和 Lombok 是否有任何最佳实践?或者有什么办法解决这个问题?
最佳答案
即使您进行了此构建,您最终也会得到一个损坏的 equals
方法,因为它不会是对称的(parent.equals(child)
如果它们有父字段中的相同值,但永远不会 child.equals(parent)
)。自从我使用 Lombok 以来已经有一段时间了,但是由于这个原因,scala 案例类(在这方面或多或少是等效的)不能扩展其他案例类。
请仔细考虑Parent
和Child
代表什么。 Child
真的可以用 Liskov 替代 Parent
吗?如果是这样,最好从 Parent
继承 equals
和 hashCode
的定义,而不是尝试在 Child 中重新定义它们
全部;如果不是,最好将通用功能提取到 Parent
和 Child
都扩展的通用父类(super class)中,而不是将它们作为父类和子类。
关于java - Lombok 继承@EqualsAndHashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28175013/
@EqualsAndHashcode class MyClass { String property1; List newClassList; } @EqualsAndHashcode
我将 Project Lombok 与 Eclipse 一起使用,我可以编译以下类。 现在我想通过使用注释 @EqualsAndHashCode.Exclude 像 shown in the Lomb
我需要通过内部对象字段创建@EqualsAndHashCode。我有两个实体 WorkPlace 和 Account。 简码: ***WorkPlace.java*** public class Wo
我有一系列 POJO,我一直在使用 Lombok 来填写,事情非常顺利。我已经开始使用 Java 8 的Optional<> 类将一些东西设置为可选,但是在将字节数组设置为可选时遇到了障碍。在我的单元
我有一个使用@EqualsAndHashCode 扩展父类的类。我在使用 Lombok 1.16.0 和 Java 8 时遇到编译错误 @EqualsAndHashCode(doNotUseGette
如何使用 @EqualsAndHashCode 和 Include,Java 的 Lombok 库。 @EqualsAndHashCode.Include( ) 如何让Equals比较class id
我有一个名为 MyClass 的类,它使用 lombok 注释 @EqualsAndHashCode(of = { "id" }) 。属性 id 是 String 类型。有了这个,我假设当我有这些类的
对于下面的类 Sonar 提示@EqualsAndHashCode( Lombok 注释)的未覆盖条件。我曾尝试添加 '//NOSONAR' 来忽略,但它没有帮助。请参阅下面的代码以供引用。 impo
使用 Eclipse JUnit 和 gradle 测试运行单元测试时,我得到不同的结果。有这样的类(class): @Getter @Setter @EqualsAndHashCode public
我有一个类,我继承了一些字段,其中包括我的 id 字段和我对对象的不同字段。我正在使用 lombok 生成 @EqualsAndHashCode 和 @ToString,但只想使用我的父类(super
我有确切描述的问题here .这就是 BigDecimal的等于被破坏,在一个类中有这样一个字段会阻止使用 @EqualsAndHashCode .我想出的唯一解决方案是 exclude这样的领域,但
我有一个Java类,带有lombok生成的equals和hashCode @EqualsAndHashCode @AllArgsConstructor public class MyJavaClass
我在 Hibernate 实体上使用 Lombok,并且有继承: @MappedSuperclass @Data public class BaseEntity { @Id @Gene
我是一名优秀的程序员,十分优秀!