一:概述
为每个类添加get/set方法、toString、hash、构造器等等都是重复无技术含量的劳动,并且及其影响代码的美观。Lombok工具应运而生,通过注解生成类对象属性的get/set、toString、hash、构造器等等方法模块。最大的一个优点就是不用在修改属性的时候担心属性对应的方法未进行修改
二:@GET/@SET
- 作用域:类/属性
- 作用:类上表示为所有属性生成get/set方法,属性则为该属性生成
- 属性:value标记生成方法访问权限,默认public、lazy标记是否延迟加载,默认fals
@Getter(value = AccessLevel.PUBLIC,lazy = true)
@Setter
public class Person {
private String name;
private Integer age;
}
class Test{
@Getter @Setter
private String email;
}
三:@ToString / @EqualsAndHashCode
- 作用域:类
- 作用:@ToString注解重写toString(),@EqualsAndHashCode注解重写equals()和hashCode()
- 属性:of标记包含属性,exclude标记不包含属性,属性含义@EqualsAndHashCode与@ToString一致
@ToString(of = {"name","age"},exclude = {"age"})
@EqualsAndHashCode(of = {"name"},exclude = {"age"})
public class Person {
private String name;
private Integer age;
}
四:@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
- 作用域:类
- 作用:@NoArgsConstructor生成无参构造、@RequiredArgsConstructor生成包含@NonNull修饰属性的构造器、@AllArgsConstructor生成所有属性的构造器
- 参数:staticName将生成静态方法获取对象实例,方法名就是参数值、access限定访问权限
@NoArgsConstructor(staticName = "no",access = AccessLevel.PROTECTED)
@RequiredArgsConstructor(staticName = "required")
@AllArgsConstructor(staticName = "all")
class Test{
private String email;
@NonNull
private String address;
}
五:@NonNull
- 作用域:属性
- 作用:作用与成员变量亦或是参数标识不能为空,为空抛出空指针异常
六:@Builder
- 作用域:类
- 作用:将类转换为建造者模式
七:@Data
- 作用域:类
- 作用于类上,效果相当于@Getter、@Setter、@EqualsAndHashCode、@RequiredArgsConstructor、@ToString
@Data
class Test{
private String email;
@NonNull
private String address;
}
八:@Cleanup
- 作用域:声明资源行前
- 作用:自动关闭资源,实现Closeable接口有效,经典例如IO等
@Cleanup FileInputStream fis = new FileInputStream(new File(""));
九:@SneakyThrows
- 作用域:方法
- 作用:捕获异常并进行抛出处理
@SneakyThrows
public static void testMethod(){
@Cleanup FileInputStream fis = new FileInputStream(new File(""));
}
十:IDEA使用
IDEA中使用Lombok的时候一定要注意完成插件的安装、依赖引入两个步骤才能正常使用。往往很多时候造成不能使用的原因就是未安装Lombok插件导致的,切记这一点