Java库lombok及注解如何使用


本篇内容介绍了“Java库lombok及注解如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lombok是一个旨在减少代码开发工作的Java库。它提供了一些简单的注解,并以此来消除java中臃肿的模版代码,比如 pojo 中最常见的setter/getter方法, 比如toString方法, 比如equals方法等等,还可以帮助我们关闭流,即使 JDK7 中已经有了 TWR 特性,但这个包很值得一试。通过几个简单的注解,将模版代码在编译时写入程序。使用 eclipse 可以在 Outline 窗口看到生成的方法,但是在源码里是干净的.首先去lombok 官网下载jar 包。只是把 jar 包下载下来并导入工程中,会发现 IDE 不识别它的注解,那怎么办?将lombok.jar复制到eclipse.ini所在的目录下,然后编辑eclipse.ini文件, 在它的末尾插入以下两行并保存:接着重启 eclipse 就可以愉快地使用这个库了。在 IntelliJ 的插件中心可以找到它。Lombok 提供的注解不多,但都好用,简要说一下常用的几个。这两个注解修饰成员变量,可用于生成setter/gettter模版代码。
举个栗子:将字节码文件反编译后可以看到下面这段代码编译后我们发现,对于数组,在写toString方法时使用了Arrays类的 静态方法deepToString。来看 eclipse 自动生成的toString方法:eclipse 中对于数组采用的是Arrays.toString()区别:这两个方法的区别是这样的,对于多维数组,使用toString只能打印出内部数组的名字,这时需要使用deepToString方法,它能将内部数组的内容全部打印出来。可以指定哪些属性不出现在toString方法中, 比如exclude={"id", "name"}当类中有成员变量的getter方法时,生成toString方法会使用这些getter方法,比如但是将该参数设置为true时(默认为 false),生成toString方法时就不会使用getter方法,而是直接使用这些成员变量,比如原本是以fieldName = fieldValue的格式来生成toString方法的,但是将该参数设置为false后(默认是 true),就不会显示fieldName了,而只是生成fieldValue, 比如若类 A 是类 B 的子类,那么在 A 类重写toString时,若把该参数设置为true,会加入下面这段代码,即也会把父类 B 的toString也写入。检查传入对象是否为 Null,若为null,则抛出NullPointerException异常。
举个栗子编译后代码用在类上,用于生成equalshashcode方法。
举个栗子编译后代码可以看出transient修饰的变量,不会参与。参数of用来指定参与的变量,其他的跟@ToString注解类似。该注解用于修饰类,会自动生成getter/setter方法, 以及重写equals(),hashcode()toString()方法。该注解可以用来自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源, 自动生成tryfinally这样的代码来关闭流。举个栗子:这三个注解修饰在类上。@NoArgsConstructor用于生成一个无参构造方法。@RequiredArgsConstructor会生成一个包含了被@NotNull标识的变量的构造方法。同样可以设置生成构造方法的权限,使用access参数进行设置。@AllArgsConstructor会生成一个包含所有变量, 同时如果变量使用了@NotNull,会进行是否为空的校验。举个栗子:这与下面这段代码是等价的,该注解用于修饰类,是@Data的不可变形式, 相当于为成员变量添加final声明, 只提供getter方法, 而不提供setter方法,然后还有equals/hashCode/toString方法,以及一个包含所有参数的构造方法。用在类、构造器、方法上,为你提供复杂的builder APIs,让你可以像如下方式调用举个栗子:反编译代码如下:注意:使用@Singular注解的集合属性名必须使用s结尾,lombok会将属性名结尾的s去掉,剩余的名字会作为方法名, 向这个集合中添加元素。@Builder的参数builderClassName设置生成的builder方法名,buildMethodName设置build方法名,builderMethodName设置builderMethod`方法名。
比如自动抛受检异常, 而无需显式在方法上使用throws语句。免费云主机域名用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性 LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误。举个栗子:反编译代码如下:可以替代经典的Double Check Lock样板代码。举个栗子:反编译代码如下,根据不同的注解生成不同类型的log对象, 但是实例名称都是log, 有六种可选实现类举个栗子,这条语句会翻译成这样“Java库lombok及注解如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Angular Route中如何提前获取数据

这篇文章主要讲解了“Angular Route中如何提前获取数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Angular Route中如何提前获取数据”吧!提前获取意味着在数据呈现在屏幕之前获取到数据。Re…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/20 23:13
下一篇 03/20 23:13

相关推荐