博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java开发 中使用 Lombok 编写代码
阅读量:2455 次
发布时间:2019-05-10

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

文章目录

Lombok的使用步骤

引入相应的maven包

org.projectlombok
lombok
1.16.18
provided

Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

IDEA工具添加对Lombok的支持

IDEA中引入Lombok支持如下:

1、点击File-- Settings设置界面,安装Lombok插件:
在这里插入图片描述
2、点击File-- Settings设置界面,开启Annocation Processors:
在这里插入图片描述
开启该项是为了让Lombok注解在编译阶段起到作用。

Eclipse的Lombok插件安装可以自行百度,也比较简单,值得一提的是,由于Eclipse内置的编译器不是Oracle javac,而是eclipse自己实现的Eclipse Compiler for Java (ECJ).要让ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下两项内容:

-Xbootclasspath/a:[lombok.jar所在路径]-javaagent:[lombok.jar所在路径]

Lombok注解的使用

POJO类常用注解:

@Data: 一般用于实体类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
在这里插入图片描述
@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
@ToString: 作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
在这里插入图片描述
@EqualsAndHashCode: 作用于类,覆盖默认的equals和hashCode

@NonNull: 主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。

在这里插入图片描述
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor: 作用于类上,用于生成构造函数。有staticName、access等属性。
staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
@NoArgsConstructor: 生成无参构造器;
@RequiredArgsConstructor: 生成包含final和@NonNull注解的成员变量的构造器;@AllArgsConstructor: 生成全参构造器。
在这里插入图片描述
@Builder: 作用于类上,将类转变为建造者模式。可以让你以下面显示的那样调用你的代码,来初始化你的实例对象。

Student.builder()               .sno( "001" )               .sname( "admin" )               .sage( 18 )               .sphone( "110" )               .build();
@Builderpublic class User {
private final Integer code = 200; private String username; private String password;}// 编译后:public class User {
private String username; private String password; User(String username, String password) {
this.username = username; this.password = password; } public static User.UserBuilder builder() {
return new User.UserBuilder(); } public static class UserBuilder {
private String username; private String password; UserBuilder() {
} public User.UserBuilder username(String username) {
this.username = username; return this; } public User.UserBuilder password(String password) {
this.password = password; return this; } public User build() {
return new User(this.username, this.password); } public String toString() {
return "User.UserBuilder(username=" + this.username + ", password=" + this.password + ")"; } }}

@Log: 作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:

在这里插入图片描述

其他重要注解:

@Cleanup: 自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
在这里插入图片描述
编译后结果如下:
在这里插入图片描述
是不是简洁了太多。

@SneakyThrows: 可以对受检异常进行捕捉并抛出,可以改写上述的main方法如下:

在这里插入图片描述

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

你可能感兴趣的文章
phaser.min.js_如何使用Phaser 3,Express和Socket.IO构建多人纸牌游戏
查看>>
p值 统计学意义_什么是统计意义? P值定义以及如何计算
查看>>
23岁一无所有怎么办_我搬到国外去创业,然后一无所有。
查看>>
gdb -iex_如何使用IEX Cloud,Matplotlib和AWS在Python中创建自动更新数据可视化
查看>>
craigslist_Craigslist,Wikipedia和丰富经济
查看>>
sql子查询示例_SQL更新查询示例说明
查看>>
100个c#初学者编程实例_C#编程:初学者入门
查看>>
c语言中的if语句_If ... C中的其他语句解释
查看>>
lxc lxd_如何在LXC和LXD中使用Linux容器
查看>>
如何构建顶部导航条_如何构建导航栏
查看>>
聊天室私人聊天原理_如何设置极其安全的私人群组聊天
查看>>
即时编译和提前编译_即时编译说明
查看>>
angular 命令行项目_Angular命令行界面介绍
查看>>
react 监听组合键_投资组合中需要的5个React项目
查看>>
css 选择器 伪元素_CSS伪元素-解释选择器之前和之后
查看>>
机器学习数据拆分_解释了关键的机器学习概念-数据集拆分和随机森林
查看>>
snapd_snapd使管理Nextcloud变得轻而易举
查看>>
devops和docker_通过免费的2小时Docker课程学习DevOps基础知识
查看>>
python构建json_如何使用Python构建JSON API
查看>>
桌面应用程序 azure_如何开始使用Microsoft Azure-功能应用程序,HTTP触发器和事件队列...
查看>>