Lombok:简洁代码、提高编程效率利器

£可爱£侵袭症+ 提交于 2019-12-24 16:18:27

【推荐】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辉煌的一生就概述结束了,哈哈哈……

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!