IDEA插件Lombok解决get/set等冗余代码
Lombok是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注解,用来消除Java类中的大量样板代码。
1. Lombok 环境配置
lombok.jar
包下载并导入:https://projectlombok.org/download- IDEA Lombok 插件安装:Settings >> Plugins 搜索安装
- IDEA 打开注解开发:Settings >> Build >> Compiler >>
☑
Enable annotation processing
2. Lombok 基本用法
@Getter / @Setter 源码
// 生成对应属性的 get/set 方法
@Target({ElementType.FIELD, ElementType.TYPE}) // 可作用在属性、类/接口/枚举上
@Retention(RetentionPolicy.SOURCE) // 在源码编译阶段自动生成对应方法
public @interface Getter { // Getter/Setter
AccessLevel value() default AccessLevel.PUBLIC; // 更改 get/set 方法的权限修饰符
...
}
@ToString 源码
// 生成包含属性的 toString 方法
@Target({ElementType.TYPE}) // 只能作用在类/接口/枚举上
@Retention(RetentionPolicy.SOURCE)
public @interface ToString {
boolean includeFieldNames() default true;
String[] exclude() default {}; // 排除部分属性
String[] of() default {}; // 包含部分属性
...
}
@NoArgsConstructor / @AllArgsConstructor 源码
// 生成无参 / 有参构造方法
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface NoArgsConstructor { // NoArgsConstructor/AllArgsConstructor
...
AccessLevel access() default AccessLevel.PUBLIC; // 设置方法的权限修饰符
...
}
@Data 源码
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
String staticConstructor() default "";
}
2.1 注解组合×3
@Data
@NoArgsConstructor
@AllArgsConstructor
demo - 生成 get / set / equals / canEqual / hashCode / toString / 无参构造 / 有参构造
//@Getter // 生成类中所有属性的 get 方法
//@Setter // 生成类中所有属性的 set 方法
//@ToString // 生成类中所有属性的1个 toString 方法
//@ToString(exclude = {"email", "password"}) // 生成排除指定属性的 toString 方法(排除一部分)
//@ToString(of = {"id", "username"}) // 生成包含指定属性的 toString 方法(包含一部分)
@Data // 生成 get/set/equals/canEqual/hashCode/toString
@NoArgsConstructor // 生成类的无参构造
@AllArgsConstructor // 生成类的所有参数的有参构造
public class User {
private Integer id;
private String username;
private String password;
private String email;
}