@Data
https://www.jianshu.com/p/c1ee7e4247bf
@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法。
- 个人理解:有了@Data就不用 @Getter和@Setter了
@AllArgsConstructor : 注在类上,提供类的全参构造 @NoArgsConstructor : 注在类上,提供类的无参构造 @Setter : 注在属性上,提供 set 方法 @Getter : 注在属性上,提供 get 方法 @EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法 @Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log
使用Lombok导致打印的tostring中缺少父类的属性
在@Data的基础上再加一个@ToString(callSuper = true)注解,callSuper = true即解决缺少父类属性的问题。
https://blog.csdn.net/wwrzyy/article/details/85090214
实体继承与@Builder注解共存
https://www.cnblogs.com/lori/p/10266508.html
无需自定义写equals和hashcode方法 - @EqualsAndHashCode
场景:判断对象相等时需要重写equals和hashcode方法;使用lombok可简化编写流程
https://www.jianshu.com/p/70fa9b64b652
可以使用
@EqualsAndHashCode
lombok生成equals(Object other)
和hashCode()
方法的实现来注释任何类定义。默认情况下,它将使用所有非静态,非瞬态字段,但您可以通过使用@EqualsAndHashCode``.Include
或标记类型成员来修改使用哪些字段(甚至指定要使用各种方法的输出)@EqualsAndHashCode``.Exclude
。或者,您可以准确地指定哪些字段,或者您希望通过与标记它们被使用的方法@EqualsAndHashCode.Include
和使用@EqualsAndHashCode(onlyExplicitlyIncluded = true)
。如果应用于
@EqualsAndHashCode
扩展另一个类的类,则此功能会变得有点棘手。通常,为这样的类自动生成equals
和hashCode
方法是个坏主意,因为超类还定义了字段,这些字段也需要equals / hashCode代码,但不会生成此代码。通过设置callSuper
到真正的,可以包括equals
和hashCode
你的超类中生成的方法的方法。因为hashCode
,结果super.hashCode()
包含在哈希算法中,因为equals
如果超级实现认为它不等于传入的对象,则生成的方法将返回false。请注意,并非所有equals
实现都能正确处理这种情况。但是,lombok生成的equals
实现确实正确处理这种情况,所以如果它也有一个lombok生成的equals
方法,你可以安全地调用你的超类等于。如果你有一个明确的超类,你被迫提供一些价值callSuper
来承认你已经考虑过了; 如果不这样做会导致警告。