Lombok的介绍和使用

背景

在日常的开发中,有很多工作都是重复的,比如:
- 我们会定义很多的domain实体类,需要给每个字段手动添加setter/getter.
- 需要打印对象的时候,需要自己手动的添加toString()方法.
- 给domain添加无参构造函数和所有参数的构造函数.

如果domain修改了属性的名字或者删除属性的名字,上面三种情况都需要程序员手动的去修改代码.
那Java中有没有一种方式能够避免这种重复的劳动呢?那就是使用lombok.

Lombok简介

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法,官网有详细的使用说明和视频.
官方地址:https://projectlombok.org/
gitHub地址: https://github.com/rzwitserloot/lombok

Lombok安装

要是用Lombok之前,需要在你的开发工具中安装Lombok.下载lombok.jar

Eclipse的插件的安装步骤

先关闭Eclipse
双击运行lombok.jar或者使用CMD命令执行 java -jar lombok.jar命令
出现如下图显示的界面:
安装
点击Specify location ... 关联你的Eclipse工具的 eclipse.exe 文件
选中之后,点击 Install/Update,接着重启工具即可.
官网有Eclipse安装lombok的视频,就在首页.

IntelliJ IDEA插件的安装步骤:

使用IntelliJ IDEA的同学直接去下载对应的lombok插件,需要修改配置
settings—>Build,Execution,Deployment—>Compiler—>Annotation Processors中
Enable annotation procession 复选框给勾选上.

Lombok的使用

安装lombok之后,不要忘记要把lombok.jar这个包加入到你的项目中.
使用Maven的同学添加如下依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.6</version>
</dependency>

接下来就可以在我们的类中使用注解的方式给类添加setter/getter方法或者构造方法,下面给同学介绍比较常用的一些注解.

@Getter and @Setter

你可以给任意字段添加@Getter/@Setter的注解,让lombok给我们自动的生成setter/getter方法.
没用lombok前你的代码需要这样写:

01 public class GetterSetterExample {
02   private int age = 10;
03   private String name;
04
05   public int getAge() {
06     return age;
07   }
08
09   public void setAge(int age) {
10     this.age = age;
11   }
12   
13   protected void setName(String name) {
14     this.name = name;
15   }
16 }

使用了lombok后你的代码是这样的:

01 import lombok.Getter;
02 import lombok.Setter;
03 public class GetterSetterExample {
04    @Getter@Setter 
05    private int age = 10;
06    @Getter@Setter
07    private String name;  
08 }

使用了Setter@Getter,瞬间代码简洁了很多,而且也不用担心字段修改后,对应的setter和getter方法需要修改.
Setter@Getter可以贴在字段上,是给该字段提供setter/getter方法.如果贴在类上,表示给该类下的所有字段添加setter和getter方法,上面的代码还可以这样写:

01 import lombok.Getter;
02 import lombok.Setter;
03 @Getter@Setter 
04 public class GetterSetterExample {
05    private int age = 10;
06    private String name;  
07 }

@ToString

所有的类都可以使用@ToString注解来生成该类的toString()方法.默认情况下,它将打印你的类名以及每个字段,按逗号分隔.
没用lombok前你的代码需要这样写:

01 public class ToStringExample {
02  private int age;
03  private String name;
04  @Override
05  public String toString() {
06      return "ToStringExample [age=" + age + ", name=" + name + "]";
07  }
08 }

使用了lombok后你的代码是这样的:

01 @ToString
02 public class ToStringExample {
03  private int age;
04  private String name;
05 }

@NoArgsConstructor and @AllArgsConstructor

@NoArgsConstructor:可以给我们定义的类自动的添加无参构造函数.
@AllArgsConstructor:可以给我们定义的类添加所有参数的构造函数.
没用lombok前你的代码需要这样写:

01 public class ConstructorExample {
02  private int age;
03  private String name;
04  public ConstructorExample() {
05      super();
06  }
07  public ConstructorExample(int age, String name) {
08      super();
09      this.age = age;
10      this.name = name;
11  }
12 }

使用了lombok后你的代码是这样的:

01 @NoArgsConstructor@AllArgsConstructor
02 public class ConstructorExample {
03  private int age;
04  private String name;

@EqualsAndHashCode

默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。

@Data

是快捷方式,代表@ToString, @EqualsAndHashCode, @Getter(所有字段), @Setter(所有字段)
没用lombok前你的代码需要这样写:

01 public class DataExample {
02  private int age;
03  private String name;
04  public int getAge() {
05      return age;
06  }
07  public void setAge(int age) {
08      this.age = age;
09  }
10  public String getName() {
11      return name;
12  }
13  public void setName(String name) {
14      this.name = name;
15  }
16  @Override
17  public String toString() {
18      return "DataExample [age=" + age + ", name=" + name + "]";
19  }
20 }

使用了lombok后你的代码是这样的:

01 @Data
02 public class DataExample {
03  private int age;
04  private String name;
05 }

更多的注解请看 https://projectlombok.org/features/index.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值