Lombok: Java开发的利器 javalombok
程序员文章站
2022-04-16 21:06:06
...
译注:Lombok是一个很老的项目了,也非常实用,但奇怪的是这么多年来似乎一直不温不火。本文只是简单介绍了它的一些基础功能。更多特性可以参考它的官网。
Lombok是一个旨在减少代码开发工作的Java库。本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法。在Java中,一个很简单的类却往往写得特别复杂。如果你没听说过Lombok的话,那它肯定会让你满意的。
Lombok可以帮助Java开发人员完成以下这些事情:
1. 不用再写setter/getter方法了
不用Lombok的话,我们通常都得这么写:
这些方法写多了之后,我慢慢开始有点讨厌Java了。
有了Lombok之后:
日子开始变得滋润多了。
下面还有Lombok其它的一些很棒的特性。
1. 不用再重写toString方法。
可以给类加上@ToString注解,Lombok会自动重写toString方法并打印出类的所有字段。
2. 不用再重写equals和hashCode方法
@EqualsAndHashCode注解可以自动生成这些方法
3. 通过类注解来生成构造方法
@NoArgsConstructor生成一个默认的构造方法
@RequiredArgsConstructor为所有final和非空(译注:带有@NonNull注解)字段生成一个构造方法
@AllArgsConstructor会为所有字段生成一个构造方法
4. @Data是@ToString, @EqualsAndHashCode, @RequiredArgsConstructor, 和@Getter / @Setter这些注解的一个快捷方式。
这些是最常用到的Lombok特性。其它的一些功能可以到它的项目主页上进行了解。
示例
假设我们有一个类是需要支持序列化的,并且需要一个构造方法。这需要重写equals,hashCode,toString,同时为私有成员变量提供setter/getter方法,并实现一个构造方法。
使用了Lombok
没有使用Lombok:
很多Java开发人员会争辩道,"有加注解的那个工夫,IDE早就把这些代码给生成了!"
我想说的是你没有说到点子上。人们不喜欢Java是因为它的代码里必须要有这些乱七八糟的东西。像Ruby, Groovy, Perl或者别的脚本语言,都比这简单多了。简单即是美,因此Lombok和Java很般配。
原创文章转载请注明出处:http://it.deepinmind.com
英文原文链接
Lombok是一个旨在减少代码开发工作的Java库。本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法。在Java中,一个很简单的类却往往写得特别复杂。如果你没听说过Lombok的话,那它肯定会让你满意的。
Lombok可以帮助Java开发人员完成以下这些事情:
1. 不用再写setter/getter方法了
不用Lombok的话,我们通常都得这么写:
public class Animal { private String name; private String gender; private String species; public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public String getGender(){ return this.gender; } public void setGender(String gender){ this.gender = gender; } public String getSpecies(){ return this.species; } public void setSpecies(String species){ this.species = species; } }
这些方法写多了之后,我慢慢开始有点讨厌Java了。
有了Lombok之后:
public class Animal { @Getter @Setter private String name; @Getter @Setter private String gender; @Getter @Setter private String species; }
日子开始变得滋润多了。
下面还有Lombok其它的一些很棒的特性。
1. 不用再重写toString方法。
可以给类加上@ToString注解,Lombok会自动重写toString方法并打印出类的所有字段。
2. 不用再重写equals和hashCode方法
@EqualsAndHashCode注解可以自动生成这些方法
3. 通过类注解来生成构造方法
@NoArgsConstructor生成一个默认的构造方法
@RequiredArgsConstructor为所有final和非空(译注:带有@NonNull注解)字段生成一个构造方法
@AllArgsConstructor会为所有字段生成一个构造方法
4. @Data是@ToString, @EqualsAndHashCode, @RequiredArgsConstructor, 和@Getter / @Setter这些注解的一个快捷方式。
这些是最常用到的Lombok特性。其它的一些功能可以到它的项目主页上进行了解。
示例
假设我们有一个类是需要支持序列化的,并且需要一个构造方法。这需要重写equals,hashCode,toString,同时为私有成员变量提供setter/getter方法,并实现一个构造方法。
使用了Lombok
@RequiredArgsConstructor @ToString @EqualsAndHashCode public class Animal { @Getter @Setter private String name; @Getter @Setter private String gender; @Getter @Setter private String species; }
没有使用Lombok:
public class Animal { private String name; private String gender; private String species; public Animal(String name, String gender, String species) { this.name = name; this.gender = gender; this.species = species; } public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public String getGender(){ return this.gender; } public void setGender(String gender){ this.gender = gender; } public String getSpecies(){ return this.species; } public void setSpecies(String species){ this.species = species; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Animal)) return false; Animal animal = (Animal) o; if (gender != null ? !gender.equals(animal.gender) : animal.gender != null) return false; if (name != null ? !name.equals(animal.name) : animal.name != null) return false; if (species != null ? !species.equals(animal.species) : animal.species != null) return false; return true; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (gender != null ? gender.hashCode() : 0); result = 31 * result + (species != null ? species.hashCode() : 0); return result; } @Override public String toString() { return Objects.toStringHelper(this) //Using guava library objects toString .add("name", name) .add("gender", gender) .add("species", species) .toString(); } }
很多Java开发人员会争辩道,"有加注解的那个工夫,IDE早就把这些代码给生成了!"
我想说的是你没有说到点子上。人们不喜欢Java是因为它的代码里必须要有这些乱七八糟的东西。像Ruby, Groovy, Perl或者别的脚本语言,都比这简单多了。简单即是美,因此Lombok和Java很般配。
原创文章转载请注明出处:http://it.deepinmind.com
英文原文链接