用Lombok减少重复代码,很美很简单 博客分类: Java EclipseNetbeansAntJPAAOP
无意中看到这样一个小框架,看完之后,真是不得不顶,很简单,却也很实用的一个东西。
当然这个框架不是mvc 也不是ioc aop orm等等东西,它类似一个代码生成器。
不再多废话了,下面是正文:
--------------------------------------------------------------------------------------------
我偶然发现的一个很小很强悍的项目:Lombok 它会在编译期修改你的字节码文件,千言万语比不上代码来展示,下面就来看看吧。
在一个pojo中,下面的代码是非常常见的:
public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
所有的这些get set,会让你的pojo变得很冗繁,当然,很多同学说get set方法都是eclipse生成的,又不用我自己写,但是自己看起来不觉得很累么,用了Lombok,我们可以这样:
import lombok.Getter; import lombok.Setter; public class User { @Getter @Setter private int id; @Getter @Setter private String name; }
我想,看了这些代码,你可能猜到Lombok做了些什么,没错,看我的eclipse截图,你就会看到Lombok到底做了些什么事情:
甚至,我们可以这样写:
import lombok.Data; public @Data class User { private int id; private String name; }
我们再来看看Lombok生成了什么样的东西:
没错,在编译期,Lombok根据你写的annotation,给你的所有属性加上了getter setter,甚至是hashCode,equals和toString。
好,我们已经领略了Lombok的威力,那么,接下来希望给您呈现Lombok的全貌:
Lombok介绍
Lombok的特色是根据annotation创建一些代码,以减少重复代码的数量,它提供了以下几个annotation:
@Getter和@Setter:为属性创建getter和setter
@EqualsAndHashCode:实现equals()方法和hashCode()方法
@ToString:实现toString()方法
@Data:上述3个annotation的和,会创建getter setter equals hashCode和toString,正如你上面看到的那样
@Cleanup:关闭流
@Synchronized:对象同步
@SneakyThrows:抛出异常
下面,看一些官网上的实例吧:
@Getter @Setter
Lombok中的写法
原来的写法:
@ToString
Lombok的写法: @ToString(exclude="id") public class User { @Getter @Setter private String name; @Getter @Setter private int id; }
原来的写法: public class User { private String name; private int id; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public String toString() { return "User [name=" + name + "]"; } }
@EqualsAndHashCode
Lombok的写法: @EqualsAndHashCode(exclude={"id"}) public class UserEqualsAndHashCode { @Getter @Setter private int id; @Getter @Setter private String name; }
其他的我不想再贴下去,我建了个工程,里面有一些基本的Lombok使用,大家可以细看。
另外,我下载下来官方的视频,放在这里,视频解释的很清晰,很明了,Lombok,真的是很简单的一个东西。
还有,DZone上的这篇介绍文章,写的也是非常清晰易懂,大家可以通过它获得更深刻的理解:
http://java.dzone.com/articles/lombok-reduces-your