`

开发环境中实现Lombok消除Java冗余(转)

阅读更多

Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长。通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。

我们看这样一个例子,一个标准的Javabean。一个典型的Javabean一般具有几个属性。每个属性具有一个accessor和mutator(getter和setter)。通常还会有一个toString()方法、一个equals()方法和一个hashCode()方法。初看上去,其中可预见的冗余就已经非常多了。如果每个属性都具有一个getter和setter,并且通常如此,那么又何必详细说明呢?

让我们来看看Lombok。为了消除代码行,Lombok使用注释来标识类和Java代码块。在前述的那个Javabean示例中,所有的getter、setter以及其他三个方法都是在编译时被暗示并包括进来的。

而且更好的是如果您使用的是Eclipse或IBM®WebSphere®StudioApplicationDeveloper(如果还没用的话,建议最好使用),您就可以将Lombok集成到Java项目并即刻获得开发时结果。换言之,Eclipse编译器可以立即识别所暗指的getters/setters,而其他Java代码则可引用这些方法。

最直接的好处当然是代码行的减少,这真的很棒。并且,如果有一个特定的getter或setter需要特别的注意,那么您就不必为了找到这个特定的getter或setter而遍历数十行代码。代码也会更为简洁并且冗余也少了。

Lombok还让您得以简化代码的其他部分—不仅仅是Javabean。比如,还可以减少try/catch/finally块内以及同步方法内的冗余代码。现在,我们来看看在您自己的开发环境中如何能实现上述目的。

安装Lombok

要进行安装,本文假设您使用的是Eclipse或WebSphereStudioApplicationDeveloper。如果不是,您仍可使用Lombok;但是不能享用开发时的种种益处。不过,您仍然可以享用编译时的益处。首先,打开您的浏览器并将URL指向http://projectlombok.org/

在撰写本文之时,用这个URL打开的页面的右上角会出现一个很大的单词。这个单词是“Download”。单击该单词并开始下载lombok.jar。此文件无需解压缩,而从其他站点下载的文件中,99%都需要解压缩。

下载此文件后,需要执行这个JAR文件。在您的操作系统中打开一个提示符,进入到安装了lombok.jar的那个目录,并键入java-jarlombok.jar。以上假设在您的路径内已经有JavaRuntimeEnvironment(JRE)。如果没有,需要添加它。如果要了解如何添加,可以参考针对您的具体操作系统的相关文档。如果您使用的是Microsoft®Windows®,那么还可以双击这个lombok.jar图标。同样地,您必须能够从您的图形用户界面(GUI)执行JAR。

不管采取何种方式,应该最终都能看到一个Lombok安装屏幕。该屏幕会提问Eclipse或WebSphereStudioApplicationDeveloper可执行文件位于何处。它的默认位置有可能是正确的。但有时可能需要更改这个默认位置。单击Install/Update,Lombok会被迅速并入Eclipse开发环境。如果已经运行了Eclipse,那么就需要关闭它并重启。

使用Lombok

现在,就可以在Eclipse或WebSphereStudioApplicationDeveloper内开始使用Lombok了。请参考清单1内的代码。
清单1.Javabean的一个良好开端 
publicclassLure{ 
 privateStringname; 
 privateintsize; 
 privateStringcolor; 
 privateStringstyle; 
}

以上是一个简单的Javabean的典型开始。从这里,可以为每个属性添加getters和setters。然后再添加一个equals()方法、一个toString()方法和一个hashCode()方法。有了Lombok,您无需自己完成上述操作。相反,您只需添加一个注释:@Data。没错,就这么简单。清单2中包括了@Data。
清单2.Javabean的一个更好的开端 
importlombok.Data 
public@DataclassLure
 privateStringname; 
 privateintsize; 
 privateStringcolor; 
 privateStringstyle; 
}

不过请记住,只有当lombok.jar位于您的构建路径且lombok.Data被导入到这个Java类时,上述代码才会奏效。如果在Eclipse或WebSphereStudioApplicationDeveloper内查看这个类的概要(通常位于屏幕上这个类的右侧),就能看到这些方法会被自动添加到这个Lure类。

若不能立即看到这个概要,可以单击Eclipse内的Window菜单,然后选择ShowView。从所出现的弹出菜单中,选择Outline,它应该出现在屏幕的右侧。强制显示类的概要的热键组合是Alt+Shift+Q,然后是O。

如果您编写了另一个类来实例化Lure,您将能立刻拥有对Lure所暗指的方法(比如getName()或setSize())的访问。您还能拥有对equals()、hashCode()和toString()的访问。很棒,对吧?

如果您使用的不是Eclipse或WebSphereStudioApplicationDeveloper,那么所暗指的这些方法添加只有在实际编译这些代码时才能被认可。所以虽然在没有Eclipse或WebSphereStudioApplicationDeveloper时仍可以使用Lombok,但Lombok最初的设计目的就是与Eclipse或WebSphereStudioApplicationDeveloper相集成。

在生成getter/setter方法时,Lombok遵从传统的标准。所有这些方法名都以get或set开头并且属性名都是大写的。当然,如果属性是一个Boolean,情况例外。在这种情况下,getter以is开始,而非get。这是Javabean的一种标准实践。

现在,假设有一个Javabean对您的一个getter具有特殊要求。在清单2的例子中,getStyle()可能返回颜色和大小的组合。在这种情况下,可以按自己的意愿编写getStyle()方法的代码。Lombok检查您的代码并且不会基于这个属性创建其自己的getStyle版本。又假设,您有一个getter方法不想公开。为此,Lombok让您可以输入一个附加参数。清单3给出了一个定制的修饰符(modifier)。
清单3.一个定制的修饰符 
privateStringname; 
@Getter(AccessLevel.PROTECTED)privateintsize; 
privateStringcolor; 
privateStringstyle;

在本例中,getSize()方法将不会被公开。它具有一个受保护的修饰符,所以它只对派生子类可用并且在Lure类本身的内部。您可能并不总是想接受Lombok为您提供的其他默认值。比如,toString()方法会列出类名以及所有的属性名和值,中间以逗号分割。这个列表出现在类名的旁边。比如,假设在记录这个Lure类时,您并不关心颜色。为了更改toString()的默认设置,需要使用ToString注释。

分享到:
评论
1 楼 gongmingwind 2010-10-19  
太神奇了,但个人认为会带来代码的阅读困难

相关推荐

    lombok简化java代码

    lombok简化java代码

    lombok(Java代码生成器)v1.16.16官方版

    lombok是一套可以帮助我们消除冗长java代码的工具包。正常情况下我们写一个Java类的时候都需要写出属性的get/set等方法,虽然现在一些IDE可以自动生成了,但是依旧会给类带来麻烦的感觉,这时候我们使用lombok(注解)...

    Lombok(Java库)

    Lombok 是一个 Java 库,它通过使用注解来消除样板代码(boilerplate code),从而简化 Java 类的开发过程。使用 Lombok 可以让开发者在编写 Java 类时减少冗长的代码,提高代码的可读性和可维护性。 Lombok 提供了...

    lombok包 lombok.jar

    Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的...通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 和 equals() 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。

    Lombok 是一种 Java™ 实用工具

    Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的

    java lombok.rar

    java lombok jar包下载

    java lombok jar下载

    自动生成java中实体类的get, set 方法。不用在像之前一样的手动去生成了。

    Lombok使用讲解及原理1

    简介可用来帮助开发人员消除 Java 的 冗长代码 ,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现 Lombok,

    lombok 1.18.24 良心价

    lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 lombok 1.18.24 ...

    lombok.jar(1.16.18版本)最新包

    lombok(1.16.18版本)最新包, ... -javaagent:lombok.jar -Xbootclasspath/a:lombok.jar 如果上面的答案均为true,那么恭喜你已经安装成功,否则将缺少的部分添加到相应的位置即可 5、重启eclipse或myeclipse

    lombok-1.16.20-API文档-中文版.zip

    标签:projectlombok、lombok、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    lombok-1.16.10-API文档-中文版.zip

    标签:projectlombok、lombok、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    lombok,对Java编程语言的添加非常辛辣。.zip

    龙目岛Project是一个Java库,它可以自动插入编辑器并构建工具,从而增加Java的功能。

    lombok.jar网盘

    lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter...

    lombok:Java编程语言的新增内容

    Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而使您的Java更加生动有趣。 永远不要再写另一个getter或equals方法,带有一个注释的类具有功能全面的生成器,可自动执行日志记录变量等等。 有关...

    lombok JAR包

    Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)

    spring mvc + lombok + redis

    springmvc 的平台架构框架。开发环境 eclipse + maven ,插件lombok, 嵌入了redis

    Lombok jar包|lombok-v1.18.4jar.zip

    Lombok 是一种 Java 实用工具,可用来帮助开发...通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 hashCode() 、equals() getter、setter等样板式代码以及以往用来分类各种 accessor 和 mutator 的大量时间。

    LombokPlayground:使用 Lombok 从 Java 项目中删除样板代码

    验证 Lombok 生成的代码正确性的单元测试位于 src/test/java 目录中。 这只是检查库及其行为的“游乐场项目”。 如果您想查看 Lombok 的所有功能,请访问其官方网站并阅读文档。 ##参考 Lombok计划官网: : ...

Global site tag (gtag.js) - Google Analytics