高效工具箱

简化java代码利器 -- Lombok

2019-07-22  本文已影响0人  Kinsanity

1.优点

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
上一篇 下一篇

猜你喜欢

热点阅读