分享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)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 插 ...
随机推荐
- LOJ6002 - 「网络流 24 题」最小路径覆盖
原题链接 Description 求一个DAG的最小路径覆盖,并输出一种方案. Solution 模板题啦~ Code //「网络流 24 题」最小路径覆盖 #include <cstdio&g ...
- kubernetes 命令使用
学会命令的查找和使用,而不是死记命令,记命令不如提高英文水平 1.kubernetes环境搭建完成后,kubernetes环境搭建参考http://www.cnblogs.com/sosogengdo ...
- 关于MYCAT 读写分离,与只读事务的问题.
习惯性为了复用mysql连接,喜欢加上@Transactional(readOnly = true) 只读事务,很多零碎的查询下,速度会快一些,也环保一些. 最近用mycat做了读写分离,其中一个查询 ...
- HADOOP集群配置
http://wenku.baidu.com/view/92cbe435eefdc8d376ee32eb.html http://www.infoq.com/cn/articles/hadoop-co ...
- java I/O框架 (三)基本流
概述 基本流有字节输入输出流(InputStream,OutputStream),和字符输入输出流(Reader,Writer),它们都是抽象类,作为Java IO API中其他所有流的父类存在. 我 ...
- asp.mvc中的vue分页实例,分页组件无法重置reload,解决点击查询按钮后,分页不刷新的问题
刚刚接触Vue.js,现在需要做一个查询功能,并且进行服务端分页.主要思路是在页面中注册一个分页组件,然后进行调用.代码如下 1.引用vue.js,具体去网上下载 2.在html的body中添加如下代 ...
- python3写入csv多一个空行
今天用python3 写入csv 总是多一个空行,查阅python3文档,发现有一个参数可以设置.特此记录一下. with open('file.csv','a',newline='') as csv ...
- (三十一)java多线程二
因为线程在执行的过程中具有一定的不确定性,在并发的时候就会出现安全问题,因此一般需要采取一定的措施来保证线程的安全,同步代码块就是其中一种方式. 以下是模拟银行取钱的多线程小例子,两个都能确保安全,但 ...
- org.hibernate.exception.ConstraintViolationException
1.错误描述 Caused by:org.hibernate.exception.ConstraintViolationException:Could not execute JDBC batch u ...
- 使用图片作为a标签的点击按钮时,当触发touchstart的时候,往往会有一个灰色的背景,想要去掉的话可以用下面这种方式
a,a:hover,a:active,a:visited,a:link,a:focus{ -webkit-tap-highlight-color:rgba(0,0,0,0); -webki ...