欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Lombok减少重复代码,很美很简单 博客分类: Architecture lombok

程序员文章站 2024-03-11 15:34:31
...

无意中看到这样一个小框架,看完之后,真是不得不顶,很简单,却也很实用的一个东西。

当然这个框架不是mvc 也不是ioc aop orm等等东西,它类似一个代码生成器。

不再多废话了,下面是正文:

--------------------------------------------------------------------------------------------

我偶然发现的一个很小很强悍的项目:Lombok 它会在编译期修改你的字节码文件,千言万语比不上代码来展示,下面就来看看吧。

 

在一个pojo中,下面的代码是非常常见的:

Java代码  用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok
  1. public  class User {  
  2.     private int id;  
  3.     private String name;  
  4.     public int getId() {  
  5.         return id;  
  6.     }  
  7.     public void setId(int id) {  
  8.         this.id = id;  
  9.     }  
  10.     public String getName() {  
  11.         return name;  
  12.     }  
  13.     public void setName(String name) {  
  14.         this.name = name;  
  15.     }  
  16.   
  17. }     

 

所有的这些get  set,会让你的pojo变得很冗繁,当然,很多同学说get set方法都是eclipse生成的,又不用我自己写,但是自己看起来不觉得很累么,用了Lombok,我们可以这样:

Java代码  用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok
  1. import lombok.Getter;  
  2. import lombok.Setter;  
  3.   
  4. public class User {  
  5.     @Getter @Setter  
  6.     private int id;  
  7.     @Getter @Setter  
  8.     private String name;  
  9.   
  10. }  

我想,看了这些代码,你可能猜到Lombok做了些什么,没错,看我的eclipse截图,你就会看到Lombok到底做了些什么事情:

 用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok

 

甚至,我们可以这样写:

Java代码  用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok
  1. import lombok.Data;  
  2.   
  3. public @Data class User {  
  4.     private int id;  
  5.     private String name;  
  6.   
  7. }     

我们再来看看Lombok生成了什么样的东西:

用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture 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中的写法

用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok

原来的写法:

用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok

 

@ToString

 

Java代码  用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok
  1. Lombok的写法:  
  2.   
  3. @ToString(exclude="id")  
  4. public  class User {  
  5.       @Getter @Setter private String name;  
  6.       @Getter @Setter private int id;  
  7.         
  8. }     

 

Java代码  用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok
  1. 原来的写法:  
  2.   
  3. public class User {  
  4.     private String name;  
  5.     private int id;  
  6.   
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.   
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.   
  15.     public int getId() {  
  16.         return id;  
  17.     }  
  18.   
  19.     public void setId(int id) {  
  20.         this.id = id;  
  21.     }  
  22.   
  23.     @Override  
  24.     public String toString() {  
  25.         return "User [name=" + name + "]";  
  26.     }  
  27.   
  28. }  

 

 @EqualsAndHashCode

 

Java代码  用Lombok减少重复代码,很美很简单
            
    
    博客分类: Architecture lombok
  1. Lombok的写法:  
  2.   
  3. @EqualsAndHashCode(exclude={"id"})  
  4. public class UserEqualsAndHashCode {  
  5.   
  6.     @Getter @Setter private int id;  
  7.     @Getter @Setter private String name;  
  8. }  

 

其他的我不想再贴下去,我建了个工程,里面有一些基本的Lombok使用,大家可以细看。

 

另外,我下载下来官方的视频,放在这里,视频解释的很清晰,很明了,Lombok,真的是很简单的一个东西。

 

 

 

还有,DZone上的这篇介绍文章,写的也是非常清晰易懂,大家可以通过它获得更深刻的理解:

 

http://java.dzone.com/articles/lombok-reduces-your

相关标签: lombok