lombok能以简单的注解形式来简化代码,提高开发人员的开发效率。例如,开发过程正宗经常需要写javabean,需要花时间去添加响应的getter/setter,也许还要写构造器、equals等方法,而且需要维护,当属性很多的时候会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
pom文件添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
常用的注解
注解 | 说明 |
---|---|
val,var | 神奇的类型推到,可以代表任意类型 |
@Getter and @Setter | |
@ToString | |
@EqualsAndHashCode | |
@NonNull | |
@AllArgsConstructor、@RequiredArgsConstructor、@NoArgsConstructor | 构造函数部分,针对不同情况的构造函数 |
@Data | 相当于 @Getter + @Setter + @ToString + @EqualsAndHashCode + RequiredArgsConstructor |
@Value | 类变成只读模式 |
@Builder | builder 模式,会创建内 Builder |
@Singular | 要配合 builder 使用,会对(List、Set)等生成更方便函数 |
@Cleanup | 告别烦人的释放的资源 |
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j,@CommonsLog, @JBossLog, @Flogger | 不同框架的日志注解 |
@SneakyThrows | 偷偷摸摸地抛出异常 |
@Delegate | 带实验性质的,能非常方便实现代理模式 |
@Accessors | 带实验性质的存取器 |
@Wither | 带实验性质的,根据被修饰的成员变量创建类 |
val,var
可以表示任何类型!
var 可以用来表示变量,类似其他语言中的 let
val 可以用来表示常量(final),类似其他语言中的 const
var str = "hello world";
val list = Arrays.asList(1,2,3,4);
System.out.println(str);
for(val item : list){
System.out.printf("%dt",item);
}
等价于
String str = "hello world";
final List<Integer> list = Arrays.asList(1,2,3,4);
System.out.println(str);
for(final Integer item : list){
System.out.printf("%dt",item);
}
@Getter、@Setter
添加了注解后会根据字段生成对应的 get、set 函数,可以修饰成员变量或者类
@Getter
@Setter
public class User {
private Long id;
private String name;
private Integer age;
}
通过下面的方式指定访问级别(PUBLIC、PROTECTED、PACKAGE、PRIVATE)
@Getter
@Setter
public class User {
private Long id;
private String name;
@Setter(AccessLevel.PROTECTED)
private Integer age;
}
@ToString
@ToString
public class User {
private Long id;
private String name;
private Integer age;
}
@Data
@Data注解标注在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法