您的当前位置:首页简化java代码利器 -- Lombok

简化java代码利器 -- Lombok

2024-12-12 来源:哗拓教育

1.优点

  • 自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率。
  • 让代码变得简洁,不用过多的去关注相应的方法
  • 更改属性时省去了手动增删getter和setter方法这些代码的麻烦。

2.缺点

  • 不支持多种参数构造器的重载。
  • 降低了源代码的可读性和完整性。

3.常用注解使用

1. @Data

注解在类上,为类的所有属性自动生成setter/getter方法,为类生成equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
使用注解:

@Data
public class User {
    private String name;
    private Integer age;
}

不使用注解:

public class User {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
2. @AllArgsConstructor

注解在类上,生成全参构造器。与之类似的两个注解:@NoArgsConstructor(生成无参构造器),@RequiredArgsConstructor(部分参数构造器)
使用注解:

@AllArgsConstructor
public class User {
    private String name;
    private Integer age;
}

不使用注解:

public class User {
    private String name;
    private Integer age;

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}
3. @Slf4j

注解在类上,替换private final Logger logger = LoggerFactory.getLogger(XXX.class);
使用注解:

@Slf4j
public class User {
    public void sayHello(){
      log.info("hello");  
    }
}

不使用注解:

public class User {
    Logger log = LoggerFactory.getLogger(User.class);
    public void sayHello(){
      log.info("hello");
    }
}

4. Lombok不生效问题

打开idea的Settings -> Build,Execution,Deployment -> Compiler -> Annotation Processors 勾选 Enable annotation processing


image
显示全文