12.20 每日总结(学习Lombok)

有个问题不解,KIMI给出来我答案。

学习时长两小时

 

解释lombok的@EqualsAndHashCode(callSuper = false) @Accessors(chain = true)的用法,给出实例

 

 

Lombok是一个Java库,它通过注解的方式在编译时自动为我们生成模板化的代码,比如getter/setter方法、equals()hashCode()toString()等方法。这样可以减少手动编写这些代码的工作量,并保持代码的整洁。

@EqualsAndHashCode(callSuper = false)

@EqualsAndHashCode注解来自Lombok,用于在类上自动生成equals(Object other)hashCode()方法。callSuper属性是一个布尔值,它指示Lombok在生成equals()hashCode()方法时是否应该调用父类的相应方法。

  • callSuper = true:在生成的equals()hashCode()方法中,会调用父类的equals()hashCode()方法。
  • callSuper = false:在生成的equals()hashCode()方法中,不会调用父类的equals()hashCode()方法。

示例:

java
import lombok.EqualsAndHashCode;

@EqualsAndHashCode(callSuper = false)
public class Person extends LivingBeing {
    private String name;
    private int age;

    // 省略其他代码
}

在这个例子中,Person类继承自LivingBeing类。如果我们在Person类上使用@EqualsAndHashCode(callSuper = false)注解,那么Lombok将只为Person类生成equals()hashCode()方法,而不会调用LivingBeing类的这些方法。

@Accessors(chain = true)

@Accessors注解来自Lombok,用于在类上自动生成所有属性的getter和setter方法。chain = true属性指示Lombok生成的setter方法是否应该返回当前类的实例(这样就可以进行链式调用)。

  • chain = false:生成的setter方法不返回任何值(即void)。
  • chain = true:生成的setter方法返回当前类的实例,允许链式调用。

示例:

java
import lombok.Accessors;

@Accessors(chain = true)
public class Person {
    private String name;
    private int age;

    // 使用Lombok生成的setter方法可以链式调用
    public static void main(String[] args) {
        Person person = new Person()
                .setName("John Doe")
                .setAge(30);
    }
}

在这个例子中,@Accessors(chain = true)注解使得Person类的setter方法返回了类的实例,这样就可以进行链式调用,如setName("John Doe").setAge(30)

使用Lombok可以大大简化代码,但需要注意的是,团队中的所有成员或项目中的其他开发者都需要有Lombok插件,并且IDE需要正确配置以支持Lombok注解。

posted @ 2024-12-25 22:27  笠大  阅读(46)  评论(0)    收藏  举报