lombok的详细使用
lombok使用
介绍:
在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。
引入依赖:
在项目中添加Lombok依赖jar,在pom文件中添加如下部分。(不清楚版本可以在Maven仓库中搜索)
1 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> 2 <dependency> 3 <groupId>org.projectlombok</groupId> 4 <artifactId>lombok</artifactId> 5 <version>1.16.18</version> 6 <scope>provided</scope> 7 </dependency>
使用:
在对应的类或者方法上使用对应注解即可。
Lombok有哪些注解:
@Setter
@Getter
@Data
@Log(这是一个泛型注解,具体有很多种形式)
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@NonNull
@Cleanup
@ToString
@RequiredArgsConstructor
@Value
@SneakyThrows
@Synchronized
@Getter和@Setter
该注解使用在类或者属性上,该注解可以使用在类上也可以使用在属性上。生成的getter遵循布尔属性的约定。例如:boolean类型的sex,getter方法为isSex而不是getSex
在使用该注解时,会默认生成一个无参构造。和对应的getterhe setter方法
该注解也可以使用在单个属性上,会默认生成一个无参构造
@Data
该注解使用在类上,该注解会提供getter、setter、equals、canEqual、hashCode、toString方法。
@NonNull
该注解使用在属性上,该注解用于属的非空检查,当放在setter方法的字段上,将生成一个空检查,如果为空,则抛出NullPointerException。
该注解会默认是生成一个无参构造。
@toString
该注解使用在类上,该注解默认生成任何非讲台字段以名称-值的形式输出。
1、如果需要可以通过注释参数includeFieldNames来控制输出中是否包含的属性名称。
2、可以通过exclude参数中包含字段名称,可以从生成的方法中排除特定字段。
3、可以通过callSuper参数控制父类的输出。
callSuper输出父类属性
注意:父类也要有toString方法,不然打印的是对象内存地址
例如:
//父类无toString方法
Person(super=com.motui.Person@3abfe836, firstName=motui, address=北京, dateOfBirth=Tue Jan 09 11:49:05 CST 2018, sex=true)
//父类有toString方法
Person(super=People(id=111), firstName=motui, address=北京, dateOfBirth=Tue Jan 09 11:50:11 CST 2018, sex=true)
@EqualsAndHashCode
该注解使用在类上,该注解在类级别注释会同时生成equals和hashCode。
注意继承关系的时候该注解的使用。详细介绍参照官方介绍
存在继承关系需要设置callSuper参数为true。
@Data
该注解使用在类上,该注解是最常用的注解,它结合了@ToString,@EqualsAndHashCode, @Getter和@Setter。本质上使用@Data注解,类默认@ToString和@EqualsAndHashCode以及每个字段都有@Setter和@getter。该注解也会生成一个公共构造函数,可以将任何@NonNull和final字段作为参数。
虽然@Data注解非常有用,但是它没有与其他注解相同的控制粒度。@Data提供了一个可以生成静态工厂的单一参数,将staticConstructor参数设置为所需要的名称,Lombok自动生成的构造函数设置为私有,并提供公开的给定名称的静态工厂方法。
相当于是将创建的构造函数变为私有的(private),然后再提供一个公有的给定名称的静态工厂方法。
@Data(staticConstructor = “PersonFactory”)
public class Person{
……}private person(){}public static Person PersonFactory(){
return new Person;
}
@AllArgsConstructor
该注解使用在类上,该注解提供一个全参数的构造方法,默认不提供无参构造。
@NoArgsConstructor
该注解使用在类上,该注解提供一个无参构造
@RequiredArgsConstructor
该注解使用在类上,使用类中所有带有 @NonNull 注解的或者带有 final 修饰的成员变量生成对应的构造方法。
@Value
这个注解用在 类 上,会生成含所有参数的构造方法,get 方法,此外还提供了equals、hashCode、toString 方法。
注意:没有setter
@Cleanup
该注解使用在属性前,该注解是用来保证分配的资源被释放。在本地变量上使用该注解,任何后续代码都将封装在try/finally中,确保当前作用于中的资源被释放。默认@Cleanup清理的方法为close,可以使用value指定不同的方法名称。
@SneakyThrows
该注解使用在方法上,这个注解用在 方法 上,可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。该注解需要谨慎使用。
@Synchronized
该注解使用在类或者实例方法上,Synchronized在一个方法上,使用关键字可能会导致结果和想要的结果不同,因为多线程情况下会出现异常情况。Synchronized
关键字将在this示例方法情况下锁定当前对象,或者class讲台方法的对象上多锁定。这可能会导致死锁现象。一般情况下建议锁定一个专门用于此目的的独立锁,而不是允许公共对象进行锁定。该注解也是为了达到该目的。
转载于:https://www.cnblogs.com/xiaoxiaodyj/p/9882127.html
lombok的详细使用相关推荐
- lombok使用详细教程
lombok使用总结 前提 这篇文章主要介绍lombok的使用,至于lombok的源码和原理暂不探究,可以看上一篇文章插件化注解处理API去了解lombok的基本原理.参考资料: lombok官网 l ...
- lombok如何给属性设置_你不得不会的Lombok全面详细讲解,全网最详细的教程
读者范围: 如果你使用过Lombok你可能只使用了部分功能,那么这里列举了所有功能,你继续阅读能完善这方面的知识: 如果你还没用用过,甚至不知道这是什么,那么对不起,你已经被技术淘汰了,这里有一份详尽 ...
- 40.lombok在IntelliJ IDEA下的使用
转自:https://www.cnblogs.com/yjmyzz/p/lombok-with-intellij-idea.html lombok是一款可以精减java代码.提升开发人员生产效率的辅助 ...
- Lombok经常用,却不知道它的原理是什么
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://urlify.cn/y2UnAn ...
- Lombok经常用,但是你知道它的原理是什么吗?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:不学无数的程序员 地址:my.oschina.net/u/4 ...
- Lombok 使用详解,简化 Java 编程
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 日拱一兵 来源 | 公众号(日拱一兵) 在 Java 应 ...
- idea ssm框架 mysql_idea搭建简单ssm框架的最详细教程(新)
为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...
- 一不小心就踩了lombok的坑?
引言 今天中午正在带着耳机遨游在代码的世界里,被运营在群里@了,气冲冲的反问我最近有删生产的用户数据的吗?我肯定客气的回答道没有呀?生产的数据我怎么能随随便便可以删除,这可是公司的红线,再说了我也没有 ...
- 使用Project Lombok是否安全? [关闭]
本文翻译自:Is it safe to use Project Lombok? [closed] In case you don't know Project Lombok helps with so ...
- 开发环境中实现Lombok消除Java冗余
Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长.通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往 ...
最新文章
- 2018半年总结:走过的路
- POJ1942-Paths On a Grid-组合数学
- 洛谷 P1417 烹调方案
- Swift基础语法 、 元组(Tuple)
- 详解CockroachDB事务处理系统
- webapi put 404
- ionic app 优化三件套,让其更贴近原生app
- 解决python读取pickle报错ValueError: unsupported pickle protocol: 5
- layui option 动态添加_layuiselect如何动态添加option
- tomcat组播实现session一致性_java会话技术-Session
- java equals 字符串_Java String 字符串 比较 == equals
- CentOS7 扩容时发现 /dev/mapper/centos-home 不存在,创建后登录终端显示 -bash-4.2
- .vue文件怎么使用_手机技巧:被人忽视OTG功能怎么使用?复制文件到U盘的新方法...
- 学计算机买电脑显卡1605ti够吗,GTX1650和GTX1050Ti哪个好?GTX1050ti和GTX1650性能差距对比评测...
- 51单片机完成时钟形式显示
- 【JavaScript】实现移动小精灵
- Python多线程编程详解,文章比较长,需耐心浏览
- 程序员爆改《GTA OL》代码后加载速度快了 70%,R 星采纳并奖励 1 万美元
- 视频教程-AI 教程illustrator从入门到精通-Illustrator
- C/C++程序的编译过程