lombok入门

目录

lombok概述

lombok安装

@Getter、@Setter

@ToString

@EqualsAndHashCode

@NotNull

生成构造方法相关注解

@Data、@Builder

@Log

@Cleanup、@SneakyThrows


lombok概述

以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString/构造方法;打印日志;I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。

LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJO类中的冗长代码。

  • 使用LomBok之前

  • 使用LomBok之后

 

 

 

lombok安装

如果IDEA版本在2020.3以上,不需要安装Lombok插件。如果IDEA版本在2020.3以下,需要安装Lombok插件,安装方法如下:

  1. 点击Flie->Setting->Plugins
  2. 搜索Lombok,安装

 

Lombok依赖

  • 普通maven项目Lombok依赖为:
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.22</version>
      <scope>provided</scope>
    </dependency>
  • SpringBoot项目Lombok的引入方式为:
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>

 

@Getter、@Setter

作用:为类中的属性提供setter/getter方法

位置:类上方或属性上方,在属性上方则为属性生成setter/getter方法,

    在类上方表示给该类下的所有属性生成setter/getter方法

属性:设置setter和getter访问权限

//给类下的所有属性添加Setter/Getter
@Setter
@Getter
public class User{
    //给id属性添加Setter
    @Setter
    private Integer id;
    //给username的setter方法设置私有权限
    @Setter(AccessLevel.PRIVATE)
    private String username;
    //取消password的Getter方法
    @Getter(AccessLevel.NONE)
    private String password;
    private static int age;
    private final String address=null;
}

 

 

注:

  • static修饰的变量不生成getter和setter方法
  • final修饰的变量只生成getter方法

在IDEA中,按住Alt+7可以查看Lombok生成的代码 

 

@ToString

作用:生成toString方法,默认情况下它会按顺序打印类名称以及每个字段。

位置:类上方

属性:exclude:取消某一个或多个变量在toString方法中的显示

 

 编写pojo类

@Getter
@Setter
@ToString
public class User1 {
    private Integer id;
    private String name;
    private String password;
}

编写测试类

public class Test1 {
    public static void main(String[] args) {
        User1 user1 = new User1();
        user1.setId(1);
        user1.setName("zhangsan");
        user1.setPassword("123456");

        System.out.println(user1);
    }
}

运行测试类 

 

@EqualsAndHashCode

判断两个对象是否相等

在Java中,调用equals()可以判断两个对象是否相等。如果类不重写该方法,则判断两个引用是否指向同一个对象。

如何重写equals():

  1. 判断两个引用是否指向同一对象
  2. 判断引用是否为Null
  3. 判断两个对象的实际类型是否相等,此时需要调用canEqual()
  4. 判断两个对象的属性是否相等

而在Set中判断对象是否重复,在调用equals()之前,需要先调用hashCode()计算hash值。所以判断对象相等需要重写equals()、canEqual()、hashCode()三个方法。

 

@EqualsAndHashCode

作用:生成equals和hashCode、canEqual方法。用于比较两个类对象是否相同。

位置:类上方

属性:

  • exclude: 比较时排除一些属性
  • of: 比较时只使用一些属性

 

编写pojo类 

@Getter
@Setter
@EqualsAndHashCode
public class User2 {
    private Integer id;
    private String name;
    private String password;
}

编写测试类 

public class Test2 {
    public static void main(String[] args) {
        User2 user1 = new User2();
        user1.setId(1);
        user1.setName("zhangsan");
        user1.setPassword("123456");

        User2 user2 = new User2();
        user2.setId(1);
        user2.setName("zhangsan");
        user2.setPassword("123456");

        System.out.println(user1.equals(user2));
    }
}

运行测试类 

 

@NotNull

作用:用于方法参数前,表示调用该方法时参数不能为null

           用于属性上方,表示为该属性赋值时值不能为null。

位置:方法参数前或属性上方

 

生成构造方法相关注解

@NoArgsConstructor

作用:生成无参构造方法

位置:类上方

 

@RequiredArgsConstructor

作用:生成包含final和@NonNull修饰的属性的构造方法

位置:类上方

 

@AllArgsConstructor

作用:生成全参的构造方法

位置:类上方

@Data、@Builder

@Data

作用:相当于同时添加@Setter、@Getter、@ToString、@EqualsAndHashCode、 @RequiredArgsConstructor五个注解

位置:类上方

 

@Builder

作用:提供链式风格创建对象

位置:类上方

 

编写pojo类

@Data
@Builder
public class User3 {
    private Integer id;
    private String name;
    private String password;
}

编写测试类

public class Test3 {
    public static void main(String[] args) {
        User3 user3 = User3.builder().id(1).name("zhangsan").password("987654").build();
        System.out.println(user3);
    }
}

启动测试类 

 

@Log

作用:在类中生成日志对象,在方法中可以直接使用

位置:类上方

 

@Data

@Log4j2

public class User7{

  private Integeri d;

  private String username;

  private String password;



  public void sleep(){

    log.info("调用睡觉方法");

    System.out.println("睡觉");

   }

}

注:针对不同的日志实现产品,有不同的日志注解,使用表示使用Java自带的日志功能,除了,还可以使用、、等注解,来使用不同的日志产品。

@Log @Log @Log4j @Log4j2 @Slf4j

 

@Cleanup、@SneakyThrows

@Cleanup

作用:自动关闭资源,如IO流对象。

位置:代码前方

 

@SneakyThrows

作用:对方法中异常进行捕捉并抛出

位置:方法上方

 

public class Test4 {

    @SneakyThrows
    public static void main(String[] args) {
        @Cleanup FileInputStream fis = new FileInputStream("");
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值