【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
Lombok是一个可以让编程人员不必硬编set、get、构造以及hash和toString方法的插件,在编译时会自动根据定义的属性生成包含这些相关方法的class文件。
常用的注解如下:
@AllArgsConstructor
作用于类,生成所有属性的代参构造函数
@NoArgsConstructor
作用于类,生成无参构造函数
@toString
作用于类,生成toString方法
@EqualsAndHashCode
作用于类,生成equals和hashcode方法
@Setter,@Getter
作用于类,为所有属性生成set和get方法,作用于属性,为该属性生成set和get方法;
下面这三个注解比较厉害了,终极大boss:
@Data
作用于类,可以生成上面除了@AllArgsConstructor以外所有的方法。
若想生成所有参数构造,需配合@AllArgsConstructor使用,但是无参构造就会失效,所以需要自定义或搭配@NoArgsConstructor一起使用。
需要说明的是:
若自定义了set或get方法,@Setter,@Getter和@Data三个注解使用时是不会覆盖生成set或get方法的
@Builder
用于类,生成一个当前类的builder构建器、builder方法和全参构造函数。构建器中的所有方法为当前类的属性名命名,功能涵盖set方法功能,但同时返回构建器对象,还有一个build方法,最终调用生成当前类对象。
Builder方法用于生成构造器对象。
需要注意:
使用该注解会同时生成全参构造函数,所以如需无参构造,需要自定义或配合@NoArgsConstructor一起使用
@Accessors(chain = true)
这是一个还在实验阶段或公测阶段的一个功能注解。需要配合@data或@set、@get使用。
可包含三个参数:
fluent:布尔值,默认false,true时生成的set和get方法都会去掉set个get前缀,该值为true时,chain属性默认为true
chain:布尔值,默认false,只有fluent为true时默认true。true时所有set方法返回值有void变成当前对象;
Prefix:前缀属性(不常用,没细研究)
下来看看实际如何操作
首先是idea安装:
设置激活安装的插件:
添加maven依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> </dependency>
@data使用示例
在右侧structure选项可以看到结果,也可以Ctrl+F12查看结果如下:
@builder使用示例:
Ctrl+F12结果如下:
代码使用:
@Accessors使用示例:
代码:
是不是跟@builder用法有点相似……
日志相关的注解:
@Slf4j(相当于:org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(this.getClass() );)
实例名就是“log”,使用如下:
log.warn(e.getMessage());
log.error(e.getMessage(), e);
还有其他日志相关注解,如:@Log4j / @Log4j2 / @CommonsLog ……
至此,lombok辉煌的一生就概述结束了,哈哈哈……
来源:oschina
链接:https://my.oschina.net/u/2757387/blog/2993429