常见工具---lombok 插件

概念:Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率

开发环境:Lombok需要的开发环境Java+Maven+IntelliJ IDEA或者Eclipse(安装Lombok Plugin)

1. 添加maven依赖

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.24</version>
  <scope>provided</scope>
</dependency>

2. 常用注解

  • @Setter

注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。可以设定访问权限及是否懒加载等。static 类型和 final 的变量不生成

  • @Getter

使用方法同上,区别在于生成的是getter方法。可以设定访问权限及是否懒加载等。

static 类型的变量不生成

@Getter(AccessLevel.NONE)----@Setter(AccessLevel.NONE)设置访问权限

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    static String str = "";
    final Integer salary = 10000;
    private int id;
    private String name;
    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private int age;
}

  • @ToString

注解在类,添加toString方法。可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。示例:@ToString(exclude = {"name","age"})

  • @EqualsAndHashCode

注解在类,生成 hashCode 、canEqual、 equals 方法。也可以通过of属性限定显示某些字段,通过exclude属性排除某些字段例:@EqualsAndHashCode(of = {"name","age"})

  • @NonNull

主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常

  • @NoArgsConstructor 注解在类,生成无参的构造方法
  • @RequiredArgsConstructor 注解在类,生成包含 final 和 @NonNull 注解的成员变量的构造器
  • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法

  • @Data 注解在类,注解在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter 和 @RequiredArgsConstrutor 这些注解,如为final属性,则不会为该属性生成setter方法

  • @Builder 作用于类上,将类转变为建造者模式

Student.builder().id(10003).name("冯世龙").age(24).build();

@Data
@Builder
public class Student {
    private int id;
    private String name;
    private int age;

    public static void main(String[] args) {
        Student student = Student.builder().id(10003).name("冯世龙").age(24).build();
        System.out.println(student); // Student(id=10003, name=冯世龙, age=24)
    }
}

  • @Slf4j 注解在类,为类提供一个 属性名为 log 的 Slf4j 日志对象
  • val:不是注解
  • @Cleanup:清理资源
public static void main(String[] args) throws FileNotFoundException {
    @Cleanup InputStream inputStream = new FileInputStream("filepath");
    @Cleanup OutputStream path = new FileOutputStream("path");
}

  • @Log 生成log对象,用于记录日志。
@Data
@Builder
@Log
public class Student {
    private int id;
    private String name;
    private int age;

    public static void main(String[] args) {
        log.info("哈哈哈"); // 信息: 哈哈哈
        Student student = Student.builder().id(10003).name("冯世龙").age(24).build();
        System.out.println(student); // Student(id=10003, name=冯世龙, age=24)
    }
}

3. Lombok工作原理

Lombok不是通过字节码改写来实现的。它主要是用编译器内支持的annotation processing,直接操纵抽象语法树(AST),根据需要添加新节点。

4. 优缺点

4.1. 优点:

  1. 通过注解的形式自动生成构造器、getter/setter、equals、hashcode等方法,提高了一定的开发效率
  2. 让代码变得简洁
  3. 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等

4.2. 缺点:

  1. 不支持多种参数构造器的重载
  2. 虽然省去麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度

7.IDEA中使用lombok

  1. 在idea中,安装lombok插件;
  2. 在Annotation Processors 中 勾选 Enable annotation processing ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值