`
hilliate
  • 浏览: 133594 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

用Lombok减少重复代码,很美很简单

    博客分类:
  • Java
阅读更多

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

当然这个框架不是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

 

 

 

 

  • 大小: 12.4 KB
  • 大小: 7.9 KB
  • 大小: 28.5 KB
  • 大小: 35.5 KB
9
4
分享到:
评论
2 楼 songlipeng 2009-12-09  
感觉不错。。。。尝试一下
1 楼 icefire 2009-12-08  
看起来不错。不知道是否可以作为非插件使用。

相关推荐

Global site tag (gtag.js) - Google Analytics