lombok简介

女爷i 2023-06-08 15:53 147阅读 0赞

lombok简介

lombok的官方地址:https://projectlombok.org/

lombok的Github地址:https://github.com/rzwitserloot/lombok

那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。

lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。

虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。

lombok安装

lombok的安装跟一般引用jar包没有什么区别,可以到官网上下载最新的jar包,然后导入到项目里面就好啦。

Maven添加依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.projectlombok</groupId>
  4. <artifactId>lombok</artifactId>
  5. <version>1.16.10</version>
  6. </dependency>
  7. </dependencies>

Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

lombok使用

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。

@NonNull: 可以帮助我们避免空指针。

使用lombok:

  1. import lombok.NonNull;
  2. public class NonNullExample extends Something {
  3. private String name;
  4. public NonNullExample(@NonNull Person person) {
  5. super("Hello");
  6. this.name = person.getName();
  7. }
  8. }

不使用lombok:

  1. public class NonNullExample extends Something {
  2. private String name;
  3. public NonNullExample(@NonNull Person person) {
  4. super("Hello");
  5. if (person == null) {
  6. throw new NullPointerException("person");
  7. }
  8. this.name = person.getName();
  9. }
  10. }

@Cleanup: 自动帮我们调用close()方法。

使用lombok:

  1. import lombok.Cleanup;
  2. import java.io.*;
  3. public class CleanupExample {
  4. public static void main(String[] args) throws IOException {
  5. @Cleanup InputStream in = new FileInputStream(args[0]);
  6. @Cleanup OutputStream out = new FileOutputStream(args[1]);
  7. byte[] b = new byte[10000];
  8. while (true) {
  9. int r = in.read(b);
  10. if (r == -1) break;
  11. out.write(b, 0, r);
  12. }
  13. }
  14. }

不使用lombok:

  1. import java.io.*;
  2. public class CleanupExample {
  3. public static void main(String[] args) throws IOException {
  4. InputStream in = new FileInputStream(args[0]);
  5. try {
  6. OutputStream out = new FileOutputStream(args[1]);
  7. try {
  8. byte[] b = new byte[10000];
  9. while (true) {
  10. int r = in.read(b);
  11. if (r == -1) break;
  12. out.write(b, 0, r);
  13. }
  14. } finally {
  15. if (out != null) {
  16. out.close();
  17. }
  18. }
  19. } finally {
  20. if (in != null) {
  21. in.close();
  22. }
  23. }
  24. }
  25. }

@Getter / @Setter: 自动生成Getter/Setter方法

使用lombok:

  1. import lombok.AccessLevel;
  2. import lombok.Getter;
  3. import lombok.Setter;
  4. public class GetterSetterExample {
  5. @Getter @Setter private int age = 10;
  6. @Setter(AccessLevel.PROTECTED) private String name;
  7. }

不使用lombok:

  1. public class GetterSetterExample {
  2. private int age = 10;
  3. private String name;
  4. public int getAge() {
  5. return age;
  6. }
  7. public void setAge(int age) {
  8. this.age = age;
  9. }
  10. protected void setName(String name) {
  11. this.name = name;
  12. }
  13. }

@NoArgsConstructor: 自动生成无参数构造函数。

@AllArgsConstructor: 自动生成全参数构造函数。

@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!

还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。

官方文档https://projectlombok.org/features/index.html

其他参考:https://www.jianshu.com/p/365ea41b3573

发表评论

表情:
评论列表 (有 0 条评论,147人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Lombok简介

    最近发现了一个非常好用的库,叫做[Lombok][],它可以帮助我们简化一些Java代码的编写。我试用了一下感觉非常好用,所以来介绍一下。 下面对Lombok的简单使用方法做