`
hilliate
  • 浏览: 135049 次
  • 性别: 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
分享到:
评论
22 楼 hilliate 2009-12-11  
黑暗浪子 写道
hilliate 写道
黑暗浪子 写道
vb2005xu 写道
那就没有多大意义了,我还以为能够运行时重新编译呢

要运行时候重编译,你要用JAVARebel。这也是一个eclipse插件


热启动?class热替换?貌似也听到有说JAVARebel也容易引起错误,不知道真实效果咋样

小时候听说过小马过河的故事吗?



will have a try!
21 楼 黑暗浪子 2009-12-10  
hilliate 写道
黑暗浪子 写道
vb2005xu 写道
那就没有多大意义了,我还以为能够运行时重新编译呢

要运行时候重编译,你要用JAVARebel。这也是一个eclipse插件


热启动?class热替换?貌似也听到有说JAVARebel也容易引起错误,不知道真实效果咋样

小时候听说过小马过河的故事吗?
20 楼 wxq594808632 2009-12-10  
gml520 写道
这个东西很好用,我在NetBeans 中也用起来了。


NetBeans不是有个jpa生成工具么.我一直用那个
19 楼 海阔天空love 2009-12-10  
看起来不错。。。。好像没多大用处
18 楼 javaDevil 2009-12-10  
没什么大用。鸡肋
17 楼 fff 2009-12-10  
看上去很美,但是实际生产中似乎没有太大意义
主要减少的代码就是在pojo中,但是对于一个项目,pojo一般是比较稳定的
16 楼 hilliate 2009-12-10  
黑暗浪子 写道
vb2005xu 写道
那就没有多大意义了,我还以为能够运行时重新编译呢

要运行时候重编译,你要用JAVARebel。这也是一个eclipse插件


热启动?class热替换?貌似也听到有说JAVARebel也容易引起错误,不知道真实效果咋样
15 楼 黑暗浪子 2009-12-10  
vb2005xu 写道
那就没有多大意义了,我还以为能够运行时重新编译呢

要运行时候重编译,你要用JAVARebel。这也是一个eclipse插件
14 楼 hilliate 2009-12-09  
zozoh 写道
hilliate 写道
flysheet 写道
虽然用这个东西,可以让代码量更加简洁,更少,但是部署打包的时候是不是这个jar包也要一块打包呢?而且用了那么多annotation我觉得有时反到看得不是特别舒服,这对于代码的运行速度会有影响吗?


不会有任何影响啊,它是在编译期做点手脚,生成的class文件跟你手写那么多代码一样,所以不会有任何影响,这个完全不用担心


对了,支持 Ant 吗?


这个我还真没试过,赶明儿我试试
13 楼 zozoh 2009-12-09  
hilliate 写道
flysheet 写道
虽然用这个东西,可以让代码量更加简洁,更少,但是部署打包的时候是不是这个jar包也要一块打包呢?而且用了那么多annotation我觉得有时反到看得不是特别舒服,这对于代码的运行速度会有影响吗?


不会有任何影响啊,它是在编译期做点手脚,生成的class文件跟你手写那么多代码一样,所以不会有任何影响,这个完全不用担心


对了,支持 Ant 吗?
12 楼 hilliate 2009-12-09  
flysheet 写道
虽然用这个东西,可以让代码量更加简洁,更少,但是部署打包的时候是不是这个jar包也要一块打包呢?而且用了那么多annotation我觉得有时反到看得不是特别舒服,这对于代码的运行速度会有影响吗?


不会有任何影响啊,它是在编译期做点手脚,生成的class文件跟你手写那么多代码一样,所以不会有任何影响,这个完全不用担心
11 楼 flysheet 2009-12-09  
虽然用这个东西,可以让代码量更加简洁,更少,但是部署打包的时候是不是这个jar包也要一块打包呢?而且用了那么多annotation我觉得有时反到看得不是特别舒服,这对于代码的运行速度会有影响吗?
10 楼 hilliate 2009-12-09  
nickevin 写道
使用了此插件 格式化无法使用

eclipse 3.3.3


eclipse 3.5 没有此问题,nickevin要不给作者报个issue?
9 楼 nickevin 2009-12-09  
使用了此插件 格式化无法使用

eclipse 3.3.3
8 楼 hilliate 2009-12-09  
gml520 写道
这个东西很好用,我在NetBeans 中也用起来了。


据号称在NetBeans里不能用啊,我因为没测,所以不敢断言,这位仁兄能不能分享一下?用法完全一样?
7 楼 hilliate 2009-12-09  
laorer 写道
最终生成的还是和 普通的 javaBean是一样的吧,源码倒是少了重复的东西,不错


最终会生成相应的getter 和setter在class文件里面

vb2005xu 写道
那就没有多大意义了,我还以为能够运行时重新编译呢


啥意思?意义挺大的啊
6 楼 gml520 2009-12-09  
这个东西很好用,我在NetBeans 中也用起来了。
5 楼 vb2005xu 2009-12-09  
那就没有多大意义了,我还以为能够运行时重新编译呢
4 楼 laorer 2009-12-09  
最终生成的还是和 普通的 javaBean是一样的吧,源码倒是少了重复的东西,不错
3 楼 hilliate 2009-12-09  
icefire 写道
看起来不错。不知道是否可以作为非插件使用。


需要装为eclipse的插件,这个真是没办法,它需要在eclipse编译程序时做点手脚

相关推荐

    lombok详细使用文档

    Lombok是一款功能强大且实用的工具库,通过简单的注解即可大幅减少Java中的模板代码。其安装简便、易于集成的特点使其成为现代Java开发中不可或缺的一部分。无论是对于新手还是经验丰富的开发者而言,掌握Lombok的...

    lombok-plugin-0.28-2018.3.zip

    2. **简化代码**:使用 Lombok,你可以避免编写大量的重复代码,如构造函数、getter 和 setter,这有助于保持代码的整洁和可读性,同时减少了因手动修改这些方法而引入的错误。 3. **IDE 集成**:Lombok 插件是必要...

    lombok 插件idea 下载

    这样既保持了类的封装性,又避免了手动编写大量重复代码。 Lombok还提供了其他有用的注解,如`@NoArgsConstructor`和`@AllArgsConstructor`,它们分别用于生成无参构造函数和包含所有字段的全参数构造函数。`@...

    lombok.zip(lombok.jar)

    Lombok通过在字段声明前添加`@Data`注解,就可以自动生成这些方法,使得代码更加整洁,减少了手动输入的重复性工作。 此外,Lombok还提供了其他有用的注解,例如: 1. `@NonNull`: 用于指定字段不应为null,Lombok...

    lombok_lombok.zip

    总之,Lombok 是 Java 开发中的一个强大工具,通过简单的注解就能实现代码的自动化生成,使得开发者可以专注于业务逻辑,而不是重复的模板代码。合理使用 Lombok 能够显著提高开发效率,提升代码质量。

    lombok-1.16.6 jar包

    - **减少重复代码**: Lombok通过注解自动化生成常规的getter和setter,使代码更加简洁,减少了程序员的工作量。 - **提高代码可读性**: 省去了大量重复的get/set方法,使得类的主体更容易阅读和理解。 - **编译时...

    lombok-plugin-2021.3.zip

    通过合理使用 Lombok 插件,开发者可以极大地减少重复代码,提高开发效率,使代码更加简洁、易于阅读和维护。在 IntelliJ IDEA 2021.3 中安装并配置好 Lombok 插件后,你就能享受到这些便利。请确保正确安装和配置...

    lombok-plugin.rar

    通过使用Lombok,开发者可以减少代码量,提高代码的可读性和整洁性,同时避免了手动维护这些重复代码可能带来的错误。 2. **IntelliJ IDEA与Lombok插件** IntelliJ IDEA作为一款功能丰富的Java IDE,集成了对...

    lombok插件.zip

    总之,Lombok是Java开发中的一大利器,它可以减少重复代码,提高开发效率,但同时也需要开发者对其原理有深入了解,以便在项目中合理运用。通过离线安装的方式,开发者可以在没有网络的环境下也能轻松地在Eclipse中...

    lombok.jar压缩包

    Lombok的主要目标是提升开发效率,通过减少大量重复的、无业务逻辑的代码,让程序员可以专注于业务逻辑本身。它提供了一系列的注解,例如: 1. `@Data`:这个注解可以为一个类生成所有的getter和setter,同时还会...

    lombok plugin配置.zip

    Lombok提供了诸如`@Data`, `@Setter`, `@Getter`, `@NoArgsConstructor`, `@AllArgsConstructor`等注解,它们能够自动为类生成构造器、getter、setter、equals、hashCode和toString方法,从而避免手动编写这些常见的...

    lombok-plugin.zip

    Lombok是一款非常流行的Java库,它提供了一组注解,用于简化JavaBean的编写工作,大大减少了冗余的getter、setter、构造函数等代码。Lombok插件则是针对IDE(如IntelliJ IDEA、Eclipse)的扩展,使得在开发过程中...

    lombok.zip

    总的来说,Lombok是一个强大的工具,能够极大地提升Java开发效率,减少手动编写重复代码的时间。通过理解和熟练使用Lombok的注解,开发者可以专注于业务逻辑,而不是样板代码。在"lombok-plugin-0.25-2019.1.1.zip...

    eclipse插件 lombok.jar

    Lombok 提供的注解使得开发者无需手动编写这些重复的代码,从而提高开发效率,保持代码的简洁性。 **1. Lombok 的安装与配置** 在 Eclipse 中安装 Lombok 非常简单,你可以通过以下步骤进行: 1. 下载 Lombok.jar...

    Lombok1.16.20.jar Lombok1.16.6.jar

    Lombok的主要目标是减少样板代码,使代码保持简洁且易于阅读。在给定的压缩包文件中,包含了不同版本的Lombok JAR文件,包括Lombok1.16.20.jar和lombok-1.16.6.jar,这些都是开发者用于在项目中集成Lombok的依赖。 ...

    lombok-1.18.12.zip

    通过提供一系列的注解,Lombok 可以自动处理诸如 getter、setter、equals、hashCode 和 toString 方法等常见但繁琐的代码生成任务,从而极大地减少了代码的重复性,提升了开发效率。Lombok 的理念是让代码更简洁、更...

    lombok jar包.zip

    - 提高开发效率:Lombok减少了大量重复的代码编写工作。 - 代码更整洁:由于没有了getter和setter,类的源代码看起来更加简洁,更容易阅读和理解。 - 减少错误:手动编写这些方法时,可能会忽略某些字段或者错误...

    lombok-idea2019适配版.zip

    Lombok的使用不仅能减少手动编写重复代码的时间,还可以保持代码的整洁性,遵循DRY(Don't Repeat Yourself)原则。同时,由于Lombok在编译时自动生成代码,不会影响运行时性能,因此在大型项目中广泛采用。

Global site tag (gtag.js) - Google Analytics