学习过程中发现了一款很不错的玩意——lombok,它是一款恶趣味的,高实用的插件(jar包,个人认为),至少在一些项目开发上简化了大部分的冗余代码,使代码看上去更加简洁
你是否有:类属性很多,getter和setter方法写一堆,看着很不舒服 的烦恼?
你是否有:每次因为忘记关闭流或一些操作而泄气纳闷?
你是否有:每次给属性赋值都要来一句对象.方法名?
你是否有:阿巴阿巴阿巴巴 …
lombok可以帮你解决(O(∩_∩)O哈哈~)
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
如果你有maven项目,可以通过maven自动导入jar包来使用lombok
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.16version>
dependency>
如果你不是maven项目,需要手动去网上下载lombok的jar包
放在项目文件夹下,并将其解析为libaray的项目库里面即可使用
(和配置一般的jar包操作一样)
本人用的是IDEA软件,点file----setting–plugins----搜索lombok
然后重启IDEA就可以开始使用了
准备student类,写入以下代码
由于我们没有为类写任何方法,所以这栏只显示了属性
如果我们不用lombok,而自己写方法,那么完整下的代码应该是这样子的、
很多很长,看到很不舒服
为了不必要的波浪线影响视觉,通过@SuppressWarnings(“all”),取消掉这个类的所有警告
删除其他所有方法,剩下属性,我们开始使用lombok
lombok的注解不和其他注解一致,大部分注解是在运行的时候生效,但是lombok的注解在编译过程就可以生效
getter和setter注解为我们的类一键生成了所需要的属性注入方法,注解可以放在类上,也可以放在指定的属性上
如果放在类上面,则自动为该类是所有属性加上getter和setter方法
如果放在某个指定属性上面,则不相同
该注解为该类增加三个默认重写的方法,equals(),canEqual(),hashCode()方法,当使用和hash相关的数据结构的时候需要同时重写相关方法
这个注解使得该对象的方法支持链式使用
这种称为链式方法,也叫寄存器(百度翻译的)
我们打开Accessors注解的源码
有三个属性可以设置,一个是fluent(流),chain(链),prefix(特殊约束指定),前两个默认是false,后一个默认是空数组
下面一个一个来讲解
①当约束 fluent = true的时候,以前的getter和setter方法名称会变成和相应属性一样的名称,且每一个setter方法返回的都是这个类对象
然后可以做以下链接方法
②当约束 chain = true的时候,以前的getter和setter方法名称不会发生相应改变,但每个setter方法的返回类型仍然变成了这个类的对象
③当约束 prefix = 某个值的时候,根据驼峰命名法的规则,setter方法和getter方法会自动忽略这个前缀
比如我将类的属性名称做以下变化,加上prefix =“aa”
但是发现getter和setter方法名称没有发生改变,这是因为prefix 会根据驼峰命名法的规则忽略掉 "aa"的前缀
builder注解是为该类增加一个工厂构造模式,当一个类增加了builder注解后会多出了 builder()方法和全参构造方法
可以通过以下方式创建一个类对象
为一个方法增加同步锁,当然也可以锁定指定的对象,但是如果不指定,则默认创建一个对象并锁定(用到再说)