我们先看下官方是如何介绍Lombok的吧
Project Lombok
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
针对上面的介绍,我们简要说下它,首先它是一个java库,它通过注解的方式使你不用再为成员属性生成get/set等其它方法,就是说它简化了你程序的代码了,使程序的书写变简洁了。
下面看下它是如何在程序中使用的吧,要想使用首先需要在自己的IDE工具里先安装一个lombok插件,然后去往这个maven仓库搜索lombok,这里我们将需要用到的lombok写到文章里。
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
将其放到自己maven的pom文件里就行了,好的,下面我们还是通过程序的方式来逐渐说明其使用的方式了。
我们先写个不使用lombok类库的示例,是不是觉得代码生成的太多了,其实生成这么多方法不是什么问题,当我们修改自己定义的属性字段名称或者数据类型时是比较麻烦的,因为我们要重新生成它们的方法。
public class LombokTest {
public static void main(String[] args) {
User user = new User("公众号~后端Coder", "0.1");
System.out.println("user = " + user);
}
static class User {
private String name;
private String age;
public User(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
User user = (User) o;
return Objects.equals(name, user.name) &&
Objects.equals(age, user.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
ok,我们看下基于lombok注解我们的示例是什么的一种形式呢
public class LombokTest {
public static void main(String[] args) {
User user = new User("公众号~后端Coder", "0.1");
System.out.println("user = " + user);
}
@Data
@AllArgsConstructor
static class User {
private String name;
private String age;
}
}
看到了吧,基于lombok类库提供的注解形式我们的示例程序就这样简洁了。
好了,我们下面要介绍的就是lombok常用注解的使用方式和简短的说明了。
@AllArgsConstructor//作用在类上是为了生成全参构造函数
static class User {
@Setter //作用在成员属性上是为生成set方法
@Getter //作用在成员属性上是为了生成get方法
private String name;
@Setter
@Getter
private String age;
}
下面我们看下@Data注解的作用吧。
@Data//作用在类上,生成get/set/toString/equals/hashcode方法
@AllArgsConstructor
@NoArgsConstructor//生成无参构造函数
static class User {
private String name;
private String age;
}
这就是用了@Data注解再也不想写其它方法的优势所在了。
下面我们继续分享自己在实际应用中使用到的一些点,比如自己喜欢链式编程,然后就在自己的程序上面使用了这个注解,下面我们还是通过程序示例的方式说明吧。
public class LombokTest {
public static void main(String[] args) {
System.out.println(new User().setName("微信公众号!后端Coder").setAge("0.1"));
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)//通过这个注解就实现了链式编程
static class User {
private String name;
private String age;
}
}
在上面的输出信息时,我们仅用了一行代码就完成了。
下面我们继续看下另外一个注解吧。
Tips:左右滑动可以看完整代码信息。
public class LombokTest {
public static void main(String[] args) {
System.out.println(new User().setName("微信公众号!后端Coder").setAge("0.1"));
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)//通过这个注解就实现了链式编程
static class User {
private String name;
private String age;
}
}