博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lombok简介
阅读量:7209 次
发布时间:2019-06-29

本文共 2465 字,大约阅读时间需要 8 分钟。

最近发现了一个非常好用的库,叫做,它可以帮助我们简化一些Java代码的编写。我试用了一下感觉非常好用,所以来介绍一下。

下面对Lombok的简单使用方法做一下总结:

  • val 这不是一个注解,用于局部变量声明,减少重复输入。
  • @NotNull 作用在方法参数上的注解,用于自动生成空值参数检查。
  • @Cleanup 作用在局部变量上,在作用域结束时会自动调用close方法释放资源。
  • @Getter 作用在字段上,会自动生成字段的Getter;作用在类上,会自动生成该类所有非静态字段的Getter,还能控制Getter的访问级别
  • @Setter 基本同上。
  • @ToString 类注解,自动生成类的toString方法,可以做一些定制,比如不使用某个字段,不调用Getters等。
  • @EqualsAndHashCode 类注解,自动生成类中所有非静态非瞬时字段的equals方法和hashCode方法。
  • @NoArgsConstructor 类注解,自动生成一个无参构造函数。
  • @AllArgsConstructor 类注解,生成一个初始化所有字段的构造函数。
  • @RequiredArgsConstructor 类注解,为final字段和标记了@NotNull的字段生成构造函数。
  • @Data 类注解,相当于同时应用了@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor。如果已经定义了一个构造方法,就不会再自动生成构造方法了。
  • @Value 类注解,和@Data类似,但是用于不可变类型。生成的类和所有字段都设置为final,所有字段都为private,自动生成Getter但是没有Setter,会生成初始化所有字段的构造函数。相当于同时应用了final @ToString、 @EqualsAndHashCode、 @AllArgsConstructor 、@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)和 @Getter。

常用的还有一个一些Log注解,Lombok已经对常用的日志都做了工作。这里直接引用官网的介绍:

@CommonsLog

Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@JBossLog
Creates private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
Creates private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
Creates private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

@Slf4j

Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
Creates private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

说了这么多,我们来看看一个例子:

package yitian.bean;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.time.LocalDate;@Data@NoArgsConstructor@AllArgsConstructorpublic class User {    private int id;    private String username;    private String password;    private String nickname;    private String address;    private LocalDate birthday;}

可以看到,由于应用了@Data注解和两个构造方法注解,代码变得非常短小易读。即使使用IDE自动生成这些代码,一般也会生成超过100行的代码。可见Lombok的方便之处。

最后再来说说Lombok的原理吧。虽然Lombok也用到了注解,但是它并没有用到反射,而是通过一些奇技淫巧,在代码编译时期动态将注解替换为具体的代码。所以JVM实际运行的代码,和我们手动编写的包含了各种工具方法的类相同。另外我仅仅对Lombok做了一些简单介绍,在其上还有一些其他注解,并给出了更详细的说明和生成前后的代码例子。有兴趣的同学可以看看。

转载地址:http://nngum.baihongyu.com/

你可能感兴趣的文章
SpringBoot应用之分布式会话
查看>>
[LeetCode/LintCode] Happy Number
查看>>
码云近期更新汇总 —— 仓库分支模型+修改仓库地址
查看>>
不要再吐槽了,Linux Mint 官网重新设计了
查看>>
x86 和 ARM 谁能主宰服务器市场?Linux 之父和 Redis 之父有分歧了
查看>>
Sequelize 4.42.1 发布,基于 Nodejs 的异步 ORM 框架
查看>>
Java打印完整的堆栈信息
查看>>
Fabric.js 2.7.0 发布,简易 JavaScript Canvas 库
查看>>
蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器 ...
查看>>
VDSM command failed: The method does not exist / is not available....
查看>>
我眼中最顶尖的架构师需要具备什么能力?
查看>>
Influxdb简单实用操作
查看>>
企业级性能、安全可靠 阿里云发布企业级大数据平台开发者版 ...
查看>>
重庆新闻联播 报道 thingJS 项目 反恐3D可视化预案 多警种3D可视化预案系统 ...
查看>>
设计模式之工厂模式
查看>>
为啥说5G是“全村人的希望” 2018年5G产业大盘点 ...
查看>>
阿里云备案服务号申请方法及申请条件
查看>>
鲜为人知的混沌工程,到底哪里好?
查看>>
AI技术普及,直播平台源码开发市场发展可期
查看>>
【MaxCompute季报】MaxCompute新功能发布 2018Q4
查看>>