`
witcheryne
  • 浏览: 1100291 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Lombok简化Java代码 - Code less do More

 
阅读更多

关于Lombok这个东西,论坛里已经有人介绍过,我也是通过别人帖子了解到这个小工具:

http://www.iteye.com/topic/798305

不过作者以免写Getter/Setter为题来介绍Lombok的优势,看了后面的评论之后,觉得这个工具意义不大.

后来在博客在线看到一篇文章,期中提到了Lombok工具.这个工具已经被国外创业者所使用,随之对其产生了很浓厚的兴趣.

<Java开源建站工具>http://www.jobbole.com/entry.php/1233

 

关于如何介绍Lombok这个工具,自己想了半天,觉得实在比不过作者在首页提供的视频介绍:

http://projectlombok.org/

 

ok~ 写了这么多Lombok到底是什么东西,他具体能带来什么便利呢?

Lombok主要是提供一套注解,根据注解在编译时生成相关代码,目前提供如下注解:

 

 

@Getter / @Setter
永远不用再写 public int getFoo() {return foo;}.
@Getter(lazy=true)
Laziness is a virtue!
@ToString

Lombok会根据field自动生成toString 方法,这个对调试来说很方便! 这个注解生成的toString格式:

 

LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com)
 

 

@EqualsAndHashCode
生成 hashCode and equals 方法.
@NoArgsConstructor@RequiredArgsConstructor and @AllArgsConstructor
Constructors made to order: Generates constructors that take no arguments, one argument per final / non-null field, or one argument for every field.
@Data
All together now: A shortcut for @ToString@EqualsAndHashCode@Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!
@Cleanup
Automatic resource management: Call your close() methods safely with no hassle.
@Synchronized
synchronized done right: Don't expose your locks.
@SneakyThrows
To boldly throw checked exceptions where no one has thrown them before!
@Log
支持多种Log工具, 我平时用@Log4j注解
val
Finally! Hassle-free final local variables.
@Delegate
Don't lose your composition.

如何使用?

1. 从项目首页下载lombok.jar

2. 双击lombok.jar, 将其安装到eclipse中(该项目需要jdk1.6+的环境)


 

3. 将Lombok.jar添加到classpath中

4.  编码看看:

 

项目结构:


 

 

package lv.sample.lombok;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.log4j.Log4j;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Log4j
public class LombokUser {
	
	private String id = null;
	private String name = null;
	private String email = null;
	
	public static void main(String[] args) {
		log.info("test the lombok bean");
		
		LombokUser u = new LombokUser("001", "wity_lv", "wity_lv@sample.com");
		System.out.println(u.toString());
		
		LombokUser u2 = new LombokUser("001", "wity_lv", "wity_lv@sample.com");
		System.out.println(u.equals(u2));
	}
}

 
 console out 写道

2011-08-24 11:57:36 test the lombok bean
2011-08-24 11:57:36 LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com)
2011-08-24 11:57:36 true
 

What is happenning???

使用javap看看编译后的代码:


在eclipse outline中显示的结构

 


 

到这里 ~ 这些仅仅只是作者提供一些方便的注释, 当然我们可以fork这个项目的 GitHub, 研究内部原理,构建适合自己团队的Lombok:

https://github.com/rzwitserloot/lombok

 

2011-08-26 10:00 补充  User中究竟省了多少代码:

关于上面写的User方法,我用作者提供的 delombok 进行了反向生成, 看看这些注释究竟省了多少代码:

 

delombok 写道
java -jar -cp lib/log4j-1.2.8.jar lib/lombok.jar delombok src -d ./src-delomboked
 

 

// Generated by delombok at Fri Aug 26 18:12:13 CST 2011
package lv.sample.lombok;

public class LombokUser {
	private String id = null;
	private String name = null;
	private String email = null;
	
	public static void main(String[] args) {
		log.info("test the lombok bean");
		LombokUser u = new LombokUser("001", "wity_lv", "wity_lv@sample.com");
		log.info(u.toString());
		LombokUser u2 = new LombokUser("001", "wity_lv", "wity_lv@sample.com");
		log.info(u.equals(u2));
	}
	
	@java.lang.SuppressWarnings("all")
	public String getId() {
		return this.id;
	}
	
	@java.lang.SuppressWarnings("all")
	public String getName() {
		return this.name;
	}
	
	@java.lang.SuppressWarnings("all")
	public String getEmail() {
		return this.email;
	}
	
	@java.lang.SuppressWarnings("all")
	public void setId(final String id) {
		this.id = id;
	}
	
	@java.lang.SuppressWarnings("all")
	public void setName(final String name) {
		this.name = name;
	}
	
	@java.lang.SuppressWarnings("all")
	public void setEmail(final String email) {
		this.email = email;
	}
	
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public boolean equals(final java.lang.Object o) {
		if (o == this) return true;
		if (!(o instanceof LombokUser)) return false;
		final LombokUser other = (LombokUser)o;
		if (!other.canEqual((java.lang.Object)this)) return false;
		if (this.getId() == null ? other.getId() != null : !this.getId().equals((java.lang.Object)other.getId())) return false;
		if (this.getName() == null ? other.getName() != null : !this.getName().equals((java.lang.Object)other.getName())) return false;
		if (this.getEmail() == null ? other.getEmail() != null : !this.getEmail().equals((java.lang.Object)other.getEmail())) return false;
		return true;
	}
	
	@java.lang.SuppressWarnings("all")
	public boolean canEqual(final java.lang.Object other) {
		return other instanceof LombokUser;
	}
	
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public int hashCode() {
		final int PRIME = 31;
		int result = 1;
		result = result * PRIME + (this.getId() == null ? 0 : this.getId().hashCode());
		result = result * PRIME + (this.getName() == null ? 0 : this.getName().hashCode());
		result = result * PRIME + (this.getEmail() == null ? 0 : this.getEmail().hashCode());
		return result;
	}
	
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public java.lang.String toString() {
		return "LombokUser(id=" + this.getId() + ", name=" + this.getName() + ", email=" + this.getEmail() + ")";
	}
	
	@java.lang.SuppressWarnings("all")
	public LombokUser() {
	}
	
	@java.beans.ConstructorProperties({"id", "name", "email"})
	@java.lang.SuppressWarnings("all")
	public LombokUser(final String id, final String name, final String email) {
		this.id = id;
		this.name = name;
		this.email = email;
	}
	private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LombokUser.class);
}
 

 

  • 大小: 70.5 KB
  • 大小: 63.7 KB
  • 大小: 117.2 KB
  • 大小: 16.2 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    lombok简化java代码

    lombok简化java代码

    lombok-plugin-0.34-2021.2.zip

    Lombok 是一个 Java 开发工具,它通过注解的方式简化了 Java 类的编写工作,减少了样板代码。Lombok 提供的注解如 `@Data`, `@Setter`, `@Getter`, `@NoArgsConstructor`, `@AllArgsConstructor` 等,能够自动生成...

    lombok-plugin--0.32-2019.2.zip

    Lombok是一款非常受欢迎的Java库,它通过注解的方式简化了Java代码的编写,特别是对于getter、setter、构造函数、equals、hashCode以及toString等方法的生成。Lombok Plugin是针对集成开发环境(IDE)的扩展插件,它...

    lombok-pluginDK-0.29-2019.2.zip

    Lombok 是一个 Java 开发工具,它通过注解的方式简化了 Java 类的编写,免去了开发者手动编写 getter、setter、构造器、equals、hashCode 和 toString 方法等繁琐的代码。Lombok 插件则是用于集成 Lombok 功能到开发...

    lombok-plugin-0.29-EAP.zip

    该压缩包文件"lombok-plugin-0.29-EAP.zip"中包含的是Lombok插件,这个插件通常用于集成开发环境(IDE),如IntelliJ IDEA或Eclipse,以便开发者在编写Java代码时能够直接享受到Lombok带来的便利。安装此插件后,IDE...

    lombok-plugin-0.34-2020.1.zip

    Lombok 是一个 Java 开发工具,它通过注解处理器自动为类添加getter、setter、构造器等常用方法,极大地减少了代码冗余,提高了开发效率。Lombok 的插件则是为了在 IDE 中支持 Lombok 功能,使开发者在编写代码时...

    lombok-plugin-0.27-2019.1.zip

    Lombok是一款非常流行的Java开发工具,它通过注解的方式简化了JavaBean的代码编写,极大地提高了开发效率。在本文中,我们将深入探讨Lombok插件及其在IntelliJ IDEA 2019.1版本中的应用。 首先,Lombok插件是针对...

    lombok-plugin-0.34.1-2018.3.zip

    Lombok 是一个 Java 开发工具,它通过注解的方式简化了 Java 类的编写,极大地减少了样板代码。在 Spring Boot 项目中,Lombok 的使用能够提高开发效率,使得代码更加简洁、易读。`lombok-plugin-0.34.1-2018.3.zip`...

    lombok-plugin-0.34-2019.3

    ​ Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。

    lombok-plugin-0.34.1-2019.1.zip

    Lombok 是一个 Java 开发工具,它通过注解的方式简化了 Java 类的编写,使得代码更加简洁、易读。Lombok 提供了一系列的注解,如 `@Data`、`@AllArgsConstructor`、`@NoArgsConstructor`、`@Setter`、`@Getter` 等,...

    lombok2018.1-2019.3.zip

    在IDE中安装Lombok插件(如压缩包内的“lombok-plugin-0.29-2018.3.zip”),可以使你在编写代码时实时看到Lombok生成的代码效果,并在编译时自动生成对应的字节码。这对于使用Eclipse或IntelliJ IDEA等主流Java IDE...

    lombok-plugin-0.28-2019.3.zip

    Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:...

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

    赠送源代码:lombok-1.16.20-sources.jar; 赠送Maven依赖信息文件:lombok-1.16.20.pom; 包含翻译后的API文档:lombok-1.16.20-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.projectlombok:lombok:1.16.20...

    lombok-plugin-0.34.1-2018.1.zip

    Lombok 是一个 Java 开发工具库,它通过提供一系列注解来简化代码,尤其是在创建简单数据类时,能够极大地减少样板代码。Lombok 插件是针对集成开发环境(IDE)如 IntelliJ IDEA 的扩展,目的是在编写和编辑 Java ...

    lombok-plugin-0.15.17- IntelliJ IDEA 2017.2.6 x64

    总之,`lombok-plugin-0.15.17-IntelliJ IDEA 2017.2.6 x64` 是一个增强 IntelliJ IDEA 对 Lombok 支持的插件,它使得开发人员能够利用 Lombok 提供的注解来简化 Java 代码,提高开发效率。在 2017 年 11 月 20 日时...

    IDEA插件-lombok-plugin-0.28-2019.3.rar

    Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现...

    lombok-intellij-plugin-releasebuild_0.29-2017.2.zip

    intellij 的lombok 插件离线安装包,Lombok是Java语言的实用工具,确切的说,应该说是一个很好用的插件,对,插件!可以用来帮助开发人员消除Java代码的冗长,尤其是对于简单的Java对象(POJO),它通过注解实现这一...

    lombok-plugin-0.34-2020.2.zip

    总的来说,"lombok-plugin-0.34-2020.2.zip" 提供了一个集成 Lombok 功能的 IDE 插件,使得开发者在使用 Lombok 进行 Java 开发时,能获得更好的编码体验。合理利用 Lombok,不仅能够提升开发效率,还能降低因手动...

    lombok 简化java 代码工具jar包

    该工具类可简化 java类的代码 比如 构造函数 set get方法等等

    lombok-plugin-0.23-IC-2017.3.zip

    lombok插件,inteliji插件,Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且...

Global site tag (gtag.js) - Google Analytics