eclipse集成lombok,以及lombok注解的使用
一。lombok简介
Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法。
二。安装lombok
1.首先下载Lombok.jar包,下载地址:http://projectlombok.org/download.html
2.下到本地后双击运行Lombok.jar,数秒后将弹出一框,以确认eclipse的安装路径 ,如图:
注意如果eclipse没有安装到默认目录,那么需要点击Specify location..选择eclipse.exe所在的路径,然后点击Install/update即可完成安装。
3.关闭重启eclipse (IDE 使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。)
4.项目里pom文件直接加入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
</dependency>
三。lombok一些注释的使用方法:
lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。
1.@NonNull
: 可以帮助我们避免空指针。
使用lombok:
import lombok.NonNull; public class NonNullExample extends Something { private String name; public NonNullExample(@NonNull Person person) { super("Hello"); this.name = person.getName(); } }
不使用lombok:
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(); } }
2.@Cleanup
: 自动帮我们调用close()
方法。
使用lombok:
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); } } }
不使用lombok:
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(); } } } }
3.@Getter / @Setter
: 自动生成Getter/Setter方法
使用lombok:
import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; public class GetterSetterExample { @Getter @Setter private int age = 10; @Setter(AccessLevel.PROTECTED) private String name; }
不使用lombok:
public class GetterSetterExample { private int age = 10; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } protected void setName(String name) { this.name = name; } }
四。全部的注解和讲解
@Data : 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法。
@Getter/@Setter : 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象。
@Slf4j : 注解在类上;为类提供一个 属性名为log 的 log4j 日志对象。
@NoArgsConstructor : 注解在类上;为类提供一个无参的构造方法。
@AllArgsConstructor : 注解在类上;为类提供一个全参的构造方法。
@NonNull : 注解在属性上,用来校验参数非空,可以帮助我们避免空指针。
@ToString : 注解在类上,重写toString方法。此外还有注解:val,var,@EqualsAndHashCode,@RequiredArgsConstructor,@Cleanup,@Value,@Builder,@SneakyThrows,@Synchronized,experimental。
详细的学习地址请看官网:https://projectlombok.org/features/all