Java简化臃肿代码之Lombok

对于Java语言的一些模板代码(Boilerplate Code),比如我们最常见的访问类的成员变量的getter/setter。如果没有特殊需求,这些方法一般都按照统一的定义规则来书写,而且内容基本不会有什么变化。

当然现在流行的Java的IDE开发工具都提供这些模板代码的自动生成,或者一些编辑器也提供Snippet功能,来减少这些重复性的工作。以最常见的Java开发IDE的Eclipse为例,他可以提供getter()/setter()、equals()、hashCode()、toString()等方法的自动生成。

Lombok是基于MIT license的去除Java特有模板代码的工具。他并不像Eclipse那样自动去生成代码,而是在编写代码的时候使用注解来达到同样的效果。

官网:[url=http://projectlombok.org/]http://projectlombok.org/[/url]

Lombok可以直接在javac命令中使用,也可以结合Eclipse或NetBeans等IDE工具使用。首先需要在官网下载lombok.jar(v0.12.0 "Angry Butterfly" (July 16th, 2013))。

如果使用javac编译Java文件的话,可以将lombok.jar放到classpath下,或者使用
[quote]javac -cp lombok.jar MyCode.java[/quote]

不过一般我们更习惯使用IDE工具,所以双击Lombok.jar,他可以自动检测机器上的Eclipse或NetBeans等IDE,选择你想使用的IDE后点击“Install/Update”后重启IDE,然后还需要将Lombok.jar添加到你的工程的Build path中。

如果不能检测到IDE的话,可以按照官方说明手动配置一下Lombok.jar。
以Eclipse为例:
1. 将 lombok.jar 复制到 eclipse.ini 所在的文件夹目录下
2. 打开 eclipse.ini,在最后面插入以下两行并保存:
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
3.重启 eclipse

[size=medium][color=blue][b]Lombok核心特征是使用注解来在编译期创建代码从而达到减少模板代码的书写。[/b][/color][/size]

以下看看它的一些常见用法。

[b](1)成员变量的访问[/b]
以一个最常见的Bean为例:Member(id、name、sex)

一般我们的写法是:

public class Member {
private int id;
private String name;
private boolean sex;
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;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
}

[img]http://dl2.iteye.com/upload/attachment/0088/6106/461bdcbb-0ccf-3415-828e-3beefd763ca1.png[/img]

使用了Lombok的@Getter @Setter

import lombok.Getter;
import lombok.Setter;

@Getter @Setter
public class Member1 {
private int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6108/12129bd1-f1fc-321a-abf8-a30e23698e33.png[/img]

使用了Lombok的@EqualsAndHashCode

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class Member2 {
private int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6110/72b8cb3d-b1de-397a-b706-482611572d66.png[/img]

使用了Lombok的@ToString

import lombok.ToString;

@ToString
public class Member3 {
private int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6112/11d01443-1c3e-3e44-9f51-a376d0636f88.png[/img]

使用了Lombok的@Data

import lombok.Data;

@Data
public class Member4 {
private int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6114/7097ba1a-30c9-34df-86ac-8dd5daf08a28.png[/img]

[b](2)构造函数[/b]

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Constructor {
private int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6116/68d619fb-4d42-332c-acb1-984cc7a3007e.png[/img]


import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class Constructor1 {
private final int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6118/17268975-617d-3604-b13d-a72ebe56181b.png[/img]


import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Constructor2 {
private int id;
private String name;
private boolean sex;
}

[img]http://dl2.iteye.com/upload/attachment/0088/6120/6e88946c-fff6-312d-885c-c323bc4614d1.png[/img]

[b](3)异常[/b]
一般的异常处理代码:

public void read() {
try {
FileReader in = new FileReader("data.txt");
// ...以后代码省略
} catch (FileNotFoundException e) {
// ...异常处理省略
}
}


使用Lombok的@SneakyThrows

@SneakyThrows
public void read1() {
FileReader in = new FileReader("data.txt");
// ...以后代码省略
}


[b](4)同步[/b]
一般的同步处理代码:

public synchronized void countup1() {
// 同步处理
}

public void countup2() {
synchronized (this) {
// 同步处理
}
}

private final Object lock = new Object();

public void countup3() {
synchronized(lock) {
// 同步处理
}
}


使用Lombok的@Synchronized

@Synchronized
public void countup() {
// 同步处理
}


官方网站上提供了一段视频,对于Lombok的使用提供了很详细的说明!

参考:
[url=http://codezine.jp/article/detail/7274]http://codezine.jp/article/detail/7274[/url]
[url=http://java.dzone.com/articles/lombok-reduces-your]http://java.dzone.com/articles/lombok-reduces-your[/url]
[url=http://www.oschina.net/translate/lombok-reduces-your-boilerplate-code]http://www.oschina.net/translate/lombok-reduces-your-boilerplate-code[/url]
[url=http://www.blogjava.net/fancydeepin/archive/2012/07/12/lombok.html]http://www.blogjava.net/fancydeepin/archive/2012/07/12/lombok.html[/url]
[url=http://jnb.ociweb.com/jnb/jnbJan2010.html]http://jnb.ociweb.com/jnb/jnbJan2010.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
51javacms是一款纯ajax的mvc架构cms;摒弃了传统的ssh的java企业级架构的庞大和臃肿代码简洁,功能简单实用,安装一键式;站内搜索是使用lucene3.3的技术;真正的开源;真正的免费;非常适合互联网中小型网站的应用。   51JAVACMS是一款基于JAVA平台研发的内容管理系统,依托JAVA的高效、安全、稳定等优势,并且汲取了php的简洁和方便,开创国内JAVA版开源CMS之先河。 这个系统没有去做日志;审核;复杂权限等企业级的功能;主要想的是为中小型互联网站服务;那些复杂臃肿的功能;留给别人去2次开发。不然的话;会严重影响51javacms的推广和应用;   我个人认为java在互联网的应用为何没有php那么受欢迎,主要是技术人员过分追求复杂的技术架构和逻辑功能去了;搞得草根都不敢去用java了(怕别人说技术不专业);这样的结果是严重阻碍了java在互联网的应用和推广。而php在互联网的成功在于简单务实(织梦php的cms成功就是这个原因)。我们的理念:大道至简;做一款简单实用的java版本的开源cms。   51JAVACMS是51JAVA版网站管理系统(51Java Content Manage System)的简称。 1. 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 2. 采用MVC AJAX简洁的技术架构 3.懂html就能建站,提供最便利、合理的使用方式 4.强大、灵活的标签,用户自定义显示内容和显示方式 5.在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好性 6.完全生成全站静态页面,全面提高页面访问速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值