分享Java开发的利器-Lombok
译注:Lombok是一个很老的项目了,也非常实用,但奇怪的是这么多年来似乎一直不温不火。很多Lombok特性可以参考它的官网介绍哈。兄弟连教育在这里只是简单介绍一下它的基础功能。
Lombok是一个旨在减少代码开发工作的Java库。兄弟连在本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法。在Java中,一个很简单的类却往往写得特别复杂。如果你没听说过Lombok的话,那它肯定会让你满意的。
Lombok可以帮助Java开发人员完成以下这些事情:
不用再写setter/getter方法了
不用Lombok的话,我们通常都得这么写:
public class Animal {
private String name;
private String gender;
private String species;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public String getGender(){
return this.gender;
}
public void setGender(String gender){
this.gender = gender;
}
public String getSpecies(){
return this.species;
}
public void setSpecies(String species){
this.species = species;
}
}
这些方法写多了之后,我慢慢开始有点讨厌Java了。
有了Lombok之后:
public class Animal {
@Getter @Setter private String name;
@Getter @Setter private String gender;
@Getter @Setter private String species;
}
日子开始变得滋润多了。 下面还有Lombok其它的一些很棒的特性。
不用再重写toString方法。 可以给类加上@ToString注解,Lombok会自动重写toString方法并打印出类的所有字段。
不用再重写equals和hashCode方法 @EqualsAndHashCode注解可以自动生成这些方法
通过类注解来生成构造方法 @NoArgsConstructor生成一个默认的构造方法 @RequiredArgsConstructor为所有final和非空(译注:带有@NonNull注解)字段生成一个构造方法 @AllArgsConstructor会为所有字段生成一个构造方法
@Data是@ToString, @EqualsAndHashCode, @RequiredArgsConstructor, 和@Getter / @Setter这些注解的一个快捷方式。
这些是最常用到的Lombok特性。其它的一些功能可以到它的项目主页上进行了解。
示例
假设我们有一个类是需要支持序列化的,并且需要一个构造方法。这需要重写equals,hashCode,toString,同时为私有成员变量提供setter/getter方法,并实现一个构造方法。
使用了Lombok
@RequiredArgsConstructor
@ToString
@EqualsAndHashCode
public class Animal {
@Getter @Setter private String name;
@Getter @Setter private String gender;
@Getter @Setter private String species;
}
没有使用Lombok:
public class Animal {
private String name;
private String gender;
private String species;
public Animal(String name, String gender, String species) {
this.name = name;
this.gender = gender;
this.species = species;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public String getGender(){
return this.gender;
}
public void setGender(String gender){
this.gender = gender;
}
public String getSpecies(){
return this.species;
}
public void setSpecies(String species){
this.species = species;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Animal)) return false;
Animal animal = (Animal) o;
if (gender != null ? !gender.equals(animal.gender) : animal.gender != null) return false;
if (name != null ? !name.equals(animal.name) : animal.name != null) return false;
if (species != null ? !species.equals(animal.species) : animal.species != null) return false;
return true;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + (gender != null ? gender.hashCode() : 0);
result = 31 * result + (species != null ? species.hashCode() : 0);
return result;
}
@Override
public String toString() {
return Objects.toStringHelper(this) //Using guava library objects toString
.add("name", name)
.add("gender", gender)
.add("species", species)
.toString();
}
}
很多Java开发人员会争辩道,"有加注解的那个工夫,IDE早就把这些代码给生成了!"
我想说的是你没有说到点子上。人们不喜欢Java是因为它的代码里必须要有这些乱七八糟的东西。像Ruby, Groovy, Perl或者别的脚本语言,都比这简单多了。简单即是美,兄弟连小编觉得Lombok和Java很般配呢。
分享Java开发的利器-Lombok的更多相关文章
- Java开发速度神器Lombok,Eclipse端安装使用教程
一.Lombok简介 Lombok是一个代码生成器,可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法. 使用 ...
- [Java 开发利器Lombok] 常用注解演示
在以往的对象模型编码时,我们需要写一大堆的get/set以及不同的构造函数等.Lombok为我们提供了一个非常好的插件形式. 在大多数的项目中,只需要使用到以下集中Annotation就足够了,如果需 ...
- Java开发神器Lombok的使用与原理
在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此.相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复 ...
- Java开发利器Myeclipse全面详解
Java开发利器Myeclipse全面详解: Ctrl+1:修改代码错误 Alt+Shift+S:Source命令 Ctrl+7:单行注释 Ctrl+Shift+/ :多行注释 Ctrl+I :缩进( ...
- 分享 Java微信开发SDK
分享 Java微信开发SDK •发布于 4周前 •作者 朋也 •432 次浏览 •最后一次编辑是 2周前 •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin ...
- 校园表白墙、微信表白墙、校园墙 微信小程序 JAVA 开发记录与分享
目录 最新版表白墙博客地址 1.微信小程序前台展示 2.功能介绍 3.后台管理 4.后端语言采用 JAVA 开发 5.体验此微信小程序 扫描下方二维码 6.如何联系我或需要源码进行联系 最新版表白墙博 ...
- 分享:Java 开发精美艺术二维码
博客地址:https://ainyi.com/58 Java 开发精美艺术二维码 看到网络上各种各样的二维码层出不穷,好像很炫酷的样子,一时兴起,我也要制作这种炫酷二维码效果 例如: 根据以往例子 根 ...
- Java代码简化神器-Lombok
一.背景 前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~ 二.开发之前的准备 1.lomb ...
- 十款强大的IDEA插件-Java开发者的利器
xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 插 ...
随机推荐
- 【前端】Vue和Vux开发WebApp日志三、完善gulp任务
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/vue_vux_3.html 项目github地址:https://github.com/shamoyuu/vue- ...
- HI3531的DDR3配置流程
DDR3 初始化配置流程 系统上电之后,必须先完成DDR3 SDRAM 的初始化操作,系统才能访问DDR3 SDRAM.在进行初始化之前需要注意以下几点: 对DDR3 SDRAM 进行上电操作时,需要 ...
- Form提交表单页面不跳转
1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- fastboot烧写hi3531
Boot Downloading started. Boot 100 % Downloaded. Boot Downloading completed! U-Boot 2010.06 (Jan 04 ...
- Java中list.get(index)报错
1.list.get(index)中的index为负值异常 严重:Exception occurred during processing request:-1 java.lang.ArrayInde ...
- Linux下LCD 10分钟自动关屏的问题总结
Linux下的LCD驱动默认10分钟后会自动关闭屏幕,我们可以修改一下代码让其不自动关屏 在有一个 drivers/char/vt.c 文件其中有一个变量(blankinterval)可以设置它来修改 ...
- HTML5新增与结构有关的元素
HTML5新增与结构有关的元素 1.section元素 2.article元素 3.aside元素 4.header元素 5.hgroup元素 6.footer元素 7.nav元素 8.figure元 ...
- .Net+SQL Server企业应用性能优化笔记—精确查找瓶颈
首先我们需要部署一个测试环境,将Web项目的源代码拷到测试环境Web服务器IIS上,使得可以直接通过IE访问我们的网站.SQL Server环境可以部署在同一台机器上,条件允许的话有专门的数据库测试服 ...
- Unity3d 截屏保存到相册,并且刷新相册
要做一个截图的功能,并且玩家可以在相册中看到. 做的时候遇到了三个问题: 1.unity自带的截图API,Application.CaptureScreenshot在Android上不生效 2.图片保 ...
- 图片压缩上传Thumbnailator 插件
一,接口已经写死 public static String upload(String appCode, MultipartFile inputFile) public static String u ...