用Lombok消除Java代码枯燥吧

Lombok是什么

Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。

如何下载

  1. 到官网下载jar包并运行 https://projectlombok.org/download
  2. 或者用meven引入依赖
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
    </dependency>
</dependencies>

使用教程

https://projectlombok.org/features/

下面是整理的教程,供大家观赏


@Data简单粗暴,或者@Getter@Setter,搞定一切setget

如果觉得@Data这个注解有点简单粗暴的话,Lombok提供一些更精细的注解,比如@Getter,@Setter,(这两个是field注解),@ToString,@AllArgsConstructor(这两个是类注解).这些可能是最常见的用法。

  • @NoArgsConstructor: 自动生成无参数构造函数。
  • @AllArgsConstructor: 自动生成全参数构造函数。
  • @Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和 @RequiredArgsConstructor!
public class User{
    private String username;
    private String password;
    //原本要生成一大堆setget
}
//相当于
@Data
public class User{
    private String username;
    private String password;
}
//相当于
@Getter
@Setter
public class User{
    private String username;
    private String password;
}

//然后Lombok就帮我们设置好了所有setget方法,是不是方便快捷

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

import lombok.NonNull;
    public class NonNullExample extends Something {
        private String name;  
        public NonNullExample(@NonNull Person person) {
        super("Hello");
        this.name = person.getName();
    }
}
//相当于
public class NonNullExample extends Something {
    private String name;  
    public NonNullExample(@NonNull Person person) {
        super("Hello");
        if (person == null) {
            throw new NullPointerException("person");
        }
        this.name = person.getName();
    }
}

@Cleanup,自动释放

import lombok.Cleanup;
import java.io.*;

public class CleanupExample {
  public static void main(String[] args) throws IOException {
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[10000];
    while (true) {
      int r = in.read(b);
      if (r == -1) break;
      out.write(b, 0, r);
    }
  }
}

//相当于

import java.io.*;

public class CleanupExample {
  public static void main(String[] args) throws IOException {
    InputStream in = new FileInputStream(args[0]);
    try {
      OutputStream out = new FileOutputStream(args[1]);
      try {
        byte[] b = new byte[10000];
        while (true) {
          int r = in.read(b);
          if (r == -1) break;
          out.write(b, 0, r);
        }
      } finally {
        if (out != null) {
          out.close();
        }
      }
    } finally {
      if (in != null) {
        in.close();
      }
    }
  }
}

猜你喜欢

转载自blog.csdn.net/moshowgame/article/details/80003050