如果不扩展类时(只扩展任何java.lang.Object类)时把 callSuper 设置为 true 会提示编译错误,因为 lombok 会将生成的equals()方法和hashCode()实现转换为从 Object 继承过来:只有相同的 Object 对象彼此相等并且具有相同的 hashCode 。 当你继承其他类时没有设置 callSuper 为 true 会进行警告,因为除非父类没有相同的...
在使用@Data时同时加上@EqualsAndHashCode(callSuper=true)注解。(开发一般都会同时加上这两个注解) 源码里callSuper默认值就是false,所以说我们代码里面写这一行是多余的。 callSuper = true时,子类在重写hashcode()和equals()方法时才会调用父类的属性,即把父类属性包含在一起重写hashcode()和equals()方法。 @Dat...
if ("createBy".equals(field.getName())) { field.setAccessible(true); Object local_createBy = field.get(parameter); field.setAccessible(false); if (local_createBy == null || local_createBy.equals("")) { field.setAccessible(true); field.set(parameter, "nzc-create"); field.setAccessible(...
通过设置callSuper=true,可以在生成的equals和hashCode方法里包含超类的方法。对于hashCode,·super.hashCode()·会被包含在hash算法内,而对于equals,如果超类实现认为它与传入的对象不一致则会返回false。注意:并非所有的equals都能正确的处理这样的情况。然而刚好lombok可以,若超类也使用lombok来生成equals方法,那么你可以...
如果希望改变这种默认行为,可以使用 @EqualsAndHashCode.Exclude 排除一些字段,并设置 callSuper = true来让子类的 equals 和 hashCode 调用父类的相应方法。 09丨数值计算:注意精度、舍入和溢出问题 务必不要使用Double作为金钱数值计算,因为浮点数计算会造成精度损失...
如有必要,需同时加上@EqualsAndHashCode(callSuper=true)注解。 @Accessors(fluent = true):fluent设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。 用法: @Data @Accessors(fluent=true)publicclassUser {privateintid;privateString name;...
*/@EqualsAndHashCode(callSuper=true)@DatapublicabstractclassPengDecoratorextendsPengCar{privatePengCar pengCar;publicPengDecorator(PengCar pengCar){this.pengCar=pengCar;}@Overridevoidrun(){// 调用汽车本身的能力pengCar.run();}} AutoDriveDecorator ...
@ToString(callSuper=true,exclude="someExcludedField")public class Foo extends Bar {private boolean someBoolean = true;private String someStringField;private float someExcludedField;} 等价于 Java 源码: public class Foo extends Bar {private boolean someBoolean = true;private String someStringField;priva...
@ToString(callSuper = true) @SuperBuilder class Man extends People { private Integer age; private Double weight; @Builder.Default private String sex = "男人"; } 效果如下所示 figure 11.jpg @NonNull 注解 放置在属性上,将对该属性进行非空检查,如果为空(null),将会抛出NullPointerException;同时为该...
如果callSuper = true,则生成的equals()和hashCode()方法会首先调用父类的equals()和hashCode()方法。 如果callSuper = false(默认值),则生成的方法不会调用父类的方法,只考虑当前类的字段。 以下是一个简单的例子: import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) class Child extends Pare...