注解工具(Lombok)
概述
Lombok是一个Java工具,可以通过使用注解的形式,帮助开发人员简化消除一些必须有但显得臃肿的代码。它能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法。
快速上手
添加依赖
xml<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
使用注解(以注解
@Data
为例)java@Data public class User { private Long id; private String name; private Integer age; private String email; }
上面的代码等价于:
javapublic class User { private Long id; private String name; private Integer age; private String email; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public User() { } protected boolean canEqual(final Object other) { return other instanceof User; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } User user = (User) o; return Objects.equals(id, user.id) && Objects.equals(name, user.name) && Objects.equals(age, user.age) && Objects.equals(email, user.email); } @Override public int hashCode() { return Objects.hash(id, name, age, email); } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", email='" + email + '\'' + '}'; } }
Lombok常用注解说明
@Data
注解在类上,提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法@Setter
注解在属性上;为属性提供 setting 方法@Getter
注解在属性上;为属性提供 getting 方法@Slf4j
注解在类上;会根据实际使用的日志框架生成log日志对象@NoArgsConstructor
注解在类上;为类提供一个无参的构造方法@AllArgsConstructor
注解在类上;为类提供一个全参的构造方法@Cleanup
可以关闭流@Builder
被注解的类加个构造者模式@Synchronized
加个同步锁@SneakyThrows
等同于try/catch 捕获异常@NonNull
如果给参数加个这个注解 参数为null会抛出空指针异常@Value
注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法