Lombok这种重复造轮子的工具为什么不用?

153 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

PS:已经更文2天

前言

我发现写把自己学到的东西输出也是一个很好的方法,同时也可以锻炼自己的表达能力。感觉自己会的东西,让自己说出来又不知道怎么说。通过文章的形式,可以让自己对知识理解更加通透。

一、Lombok的引入

在IDEA 中通过plugins安装 Lombok插件,因为我这个是在Mac上安装的,这个是在preferences里,win下应该在setting中。(不知道算不算废话就顺便提一嘴😭)

截屏2022-11-24 下午6.10.31.png

安装好以后我们在pom.xml引入

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

这里我们可以到maven的官网去引入依赖 lombok/1.18.12大家在选在选择引入的时候最好选用的人数多的。

截屏2022-11-24 下午6.47.42.png

引入错误

这里放一个我自己在引入的时候出现的错误❌
大家在往pom.xml引入Lombok的时候记得把它放在

<dependencies>  
    引入的依赖放在这里面不然编译器会报错
</dependencies>

截屏2022-11-24 下午6.32.24.png

修改过后

截屏2022-11-24 下午6.40.21.png

🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

二、@Data

我们创建一个user类:里面存放我们的用户id,姓名,性别,年龄,地址 (gender设为int类型,我们用0,1来表示性别就可以)

private int id;
private String name;
private int gender;
private int age;
private String address;

我们讲这些数据设为private后,以前我们去设置和获得这些值的时候会在在类当中写get和set方法,虽然idea可以自动生成get/set方法,但是这样一来会让我们的代码量增加,变得很复杂。现在我们可以通过Lombok注解不用再去写这些get/set方法,也能实现get/set。其实它的本质还是get/set。

增加方法

对比:以前我们的get/set方法

截屏2022-11-24 下午7.42.32.png 现在只要我们在类上打上注解@Data也可以实现相同的效果 (第一次☝️使用会不会感到很amazing,以前我就觉得这个get/set方法写来写去很麻烦,又占地方,现在简洁明了了😊😊)

截屏2022-11-24 下午7.38.23.png

这里放一张实现效果截图🐶

截屏2022-11-24 下午7.48.37.png

三、@Setter

截屏2022-11-24 下午7.52.26.png

可以看到我们为类打上注解(@Setter)后:class中除了增加每个变量的set方法还有一个默认的构造函数

三、@Getter

截屏2022-11-25 上午8.54.42.png

同样我们的@Getter注解也是多了一个默认构造函数

四、@Log4j

Log4j日志框架,这里我就不展开多说了,我去查了一下资料之后发现内容还挺多,打算把这个另外放一篇文章来讲细讲。

五、@AllArgsConstructor

🔥打上个注解后会自动为我们的类加含参数构造方法

截屏2022-11-26 下午10.12.06.png

六、@NoArgsConstructor

打上注解🤔提供无参默认构造函数

截屏2022-11-26 下午10.10.15.png

七、@EqualsAndHashCode

🌧️打上注解会生成equals,hashcode,canequal三个方法

截屏2022-11-26 下午10.15.57.png

八、@NonNull

💓在属性上打上注解,会检测该属性是否为空,为空就抛出空指针。不过Java类中这些成员属性默认都是有值的(null)。
有点不知道它的作用在哪,希望知道的大哥能给小弟讲讲🦐

九、 @ToString

😄在类上打上该注解,会自动生成tostring方法。 截屏2022-11-26 下午10.15.57.png

十、 @RequiredArgsConstructor

🐷注解打在类上,该注解会为打上@NOTNULL和用final修饰的属性添加构造函数参数。

截屏2022-11-26 下午10.41.28.png

十、 @Value

🀄️这个注解打在类上会生成,含参数的构造方法所有属性的get方法, equals,toString,

截屏2022-11-26 下午10.46.02.png

十一、 @SneakyThrows

注解在方法上,会捕获方法中的异常,可以使用SneakyThrows(Exception.class)的方法捕获指定的异常。

截屏2022-11-26 下午10.58.50.png

  • @Synchronized

synchronized中文意思是同步,也称之为”同步锁“synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。

锁的这里,我还不太会就不展开了,后面我学会了再把锁这个加上去。

总结:

总算写完了,发现自己有好多基础的东西还不会,触及自己的知识盲区也挺好的。后面我会继续给大家更的!!!