文档章节

分享Java开发的利器-Lombok

lampbrotherIT
 lampbrotherIT
发布于 2016/07/21 11:40
字数 967
阅读 6
收藏 0

译注:Lombok是一个很老的项目了,也非常实用,但奇怪的是这么多年来似乎一直不温不火。很多Lombok特性可以参考它的官网介绍哈。兄弟连www.lampbrother.net在这里只是简单介绍一下它的基础功能。

Lombok是一个旨在减少代码开发工作的Java库。本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法。在Java中,一个很简单的类却往往写得特别复杂。如果你没听说过Lombok的话,那它肯定会让你满意的。

Lombok可以帮助Java开发人员完成以下这些事情:

不用再写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其它的一些很棒的特性。

不用再重写toString方法。 可以给类加上@ToString注解,Lombok会自动重写toString方法并打印出类的所有字段。

不用再重写equals和hashCode方法 @EqualsAndHashCode注解可以自动生成这些方法

通过类注解来生成构造方法 @NoArgsConstructor生成一个默认的构造方法 @RequiredArgsConstructor为所有final和非空(译注:带有@NonNull注解)字段生成一个构造方法 @AllArgsConstructor会为所有字段生成一个构造方法

@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很般配呢。

© 著作权归作者所有

共有 人打赏支持
lampbrotherIT
粉丝 2
博文 37
码字总数 50418
作品 0
昌平
私信 提问
Lombok: Java开发的利器

Lombok是一个旨在减少代码开发工作的Java库。本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法。在Java中,一个很简单的类却往往写得特...

陶邦仁
2015/03/08
0
0
推荐一款代码神器,代码量至少省一半!

在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。 今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!...

Java技术栈
01/30
0
0
以简单的方式消除 Java 的冗长

Lombok 是一种 Java Archive (JAR) 文件,可用来消除 Java 代码的冗长。 我们看这样一个例子,一个标准的 Java bean。一个典型的 Java bean 一般具有几个属性。每个属性具有一个 accessor 和...

红薯
2010/04/13
1K
6
优雅的JAVA工具库LOMBOK

优雅的Java工具库Lombok 最近在公司的项目中看到了对于Lombok的应用,通过@Data注解标注POJO,省略了大量的getter/setter代码,原先冗长的POJO在瘦身之后直接变得干净、清爽,程序员再也不需...

编程SHA
01/02
0
0
以简单的方式消除 Java 的冗长(Lombok)

复制的红薯的,自己只是做一个归档,方便自己看。 ------------------------------------------------------------------------------------ Lombok 是一种 Java Archive (JAR) 文件,可用来...

qqli
2012/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安装数据库 常见问题

数据库重置密码 如果MySQL数据库用户的密码设置过于简单,数据库在用户登录后会提示重置密码,并且不接受简单的密码。 提示需要重置密码: ERROR 1820 (HY000): You must reset your passwo...

狼王黄师傅
26分钟前
0
0
三种方式拿到反射的入口

public class a_1 { public static void main(String args[]) throws ClassNotFoundException { //三种方式拿到反射的入口 System.out.println(Class.forName("reflect.com.Son")); System.o......

南桥北木
37分钟前
1
0
Macbook 安装PhotoShop 总提示安装包损坏的问题

问题描述 今天在给Mac10.12安装Adobe Photoshop的时候一直提示Error The installation cannot continue as the installer file may be damaged. Download the installer file again.起初以为......

Carlyle_Lee
44分钟前
2
0
Java 帝国对 Python 的渗透能成功吗?哈哈

引子 Java 帝国已经成立20多年,经过历代国王的励精图治,可以说是地大物博,码农众多。 可是国王依然不满足,整天想着如何继续开拓疆土, 这一天晚上他又把几个重臣招来商议了。 IO大臣说:...

边鹏_尛爺鑫
今天
17
0
分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部