Lombok 常用注解

一、 Lombok 注解

分类注解作用常用参数/示例
核心类注解@Getter/@Setter自动生成字段的 getter/setter 方法@Setter(AccessLevel.PROTECTED) 指定访问权限 
@ToString生成 toString() 方法@ToString(exclude = "id") 排除字段 
@EqualsAndHashCode生成 equals() 和 hashCode() 方法@EqualsAndHashCode(callSuper = true) 包含父类字段
@Data复合注解:包含 @Getter@Setter@ToString@EqualsAndHashCode适用于 POJO 类 
构造器注解@NoArgsConstructor生成无参构造器无参 
@AllArgsConstructor生成全字段构造器全参 
@RequiredArgsConstructor为 final 或 @NonNull 字段生成构造器仅含必填字段 
设计模式@Builder实现建造者模式,支持链式调用User.builder().name("Tom").build() 
@Value生成不可变类(类似 @Data,字段默认为 final适用于值对象 
工具类注解@NonNull自动校验参数或字段非空public void setName(@NonNull String name) 
@SneakyThrows将受检异常转换为非受检异常无需显式 throws 
@Cleanup自动管理资源(如关闭流)@Cleanup InputStream input = new FileInputStream("file.txt") 
@Synchronized替代 synchronized 关键字可指定锁对象 
日志注解@Slf4j生成 SLF4J 日志对象 loglog.info("Running...") 
其他@Accessors(chain = true)开启链式调用(Setter 返回 thisuser.setName("A").setAge(20) 

二、引入Maven的依赖


        <!--lombok 实体类封装-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.38</version>
        </dependency>

三、 注解的使用

(一)‌核心类注解

   1.@Getter/@Setter: 自动生成getter/setter
@Getter
@Setter
public class Dept {
    private Long id;
    private String name;
    private Date createTime;
    private Date updateTime;


}

 等同于===如下: 

2. @ToString:自动重写 toString() 方法,会印出所有变量
@ToString
public class Dept {
    private Long id;
    private String name;
    private Date createTime;
    private Date updateTime;


}

  等同于===如下: 

3. @EqualsAndHashCode

自动生成 equals(Object other) 和 hashcode() 方法,包括所有非静态变量和非 transient 的变量

@EqualsAndHashCode(callSuper = false)
public class Dept {
    private Long id;
    private String name;
    private Date createTime;
    private Date updateTime;
}

  等同于===如下: 

4. @Data:整合包,只要加了 @Data 这个注解,等于同时加了以下注解

@Getter/@Setter
@ToString
@EqualsAndHashCode

@Data
public class Dept {
    private Long id;
    private String name;
    private Date createTime;
    private Date updateTime;
}

  等同于===如下: 

(二)构造器注解

1、@NoArgsConstructor : 生成一个没有参数的构造器

@NoArgsConstructor
public class Dept {
    private Long id;
    private String name;
    private Date createTime;
    private Date updateTime;


}

  等同于===如下: 

2、@AllArgsConstructor : 生成一个包含所有参数的构造器

@AllArgsConstructor
public class Dept {
    private Long id;
    private String name;
    private Date createTime;
    private Date updateTime;

}

  等同于===如下: 

3、@RequiredArgsConstructor : 生成一个包含 "特定参数" 的构造器,特定参数指的是那些有加上 final 修饰词的变量

注意:如果所有的变量都是正常的,都没有用 final 修饰的话,那就会生成一个没有参数的构造器

@RequiredArgsConstructor
public class Dept {
    private  final Long id;
    private String name;
    private Date createTime;
    private Date updateTime;
}

  等同于===如下:  

(三)、‌设计模式

1、@Builder :自动生成流式 set 值写法,从此之后再也不用写一堆 setter ;

@Builder
public class Dept {
    private   Long id;
    private   String name;
    private Date createTime;
    private Date updateTime;

}
    public static void main(String[] args) {
       Dept dept = Dept.builder()
               .id(1L)
               .name("dept1")
               .createTime(new Date(System.currentTimeMillis()))
               .build();
        System.out.println(dept);

    }

 

  等同于===如下:  

 

2、 @Value:整合包,但是他会把所有的变量都设成 final 的,其他的与 @Data 一样,等于同时加了以下注解

@Getter (注意没有setter)
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor

@Value
public class Dept {
    private   Long id;
    private   String name;
    private Date createTime;
    private Date updateTime;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值