.net get set 初始化_一个注解,去掉项目中的一坨set代码,又快又爽

657a5bfd6d06dd1b39396e0f58e777f8.png

这个小工具,想必大家很多人都使用过,就是Lombok,很多人用她来自动生成get和set代码,却很少用它来生成建造者模式,简单介绍一下

安装idea插件

935f9c6b394f34b9d3eb9aabe5a5a988.png

pom文件中加入依赖

org.projectlombok lombok 1.16.20provided

使用

很多项目中有很多set代码,如下

studet.setName()student.setAge()student.setGrade()

当set方法很少时,这种方法尚且可以接受,当需要set一堆属性时,你会发现代码都是满屏的set代码,很丑。几乎很有的开源项目都会用建造者模式来生成set代码,演示一下使用

没有继承的情况

0e1dc2121911dd35cd3d8d8ffc74eb17.png

没有用set代码照样设置属性,而且是链式编程,用起来非常爽

有继承的情况

  1. 对于父类,使用@AllArgsConstructor注解
  2. 对于子类,手动编写全参数构造器,内部调用父类全参数构造器,在子类全参数构造器上使用@Builder注解
e069f865874e8e7f49a292d9ab80d8db.png
f60473b76bf1f42697deaa0f5739fccd.png

极大的缩短行数。简单介绍一下其他注解的使用,应该用的人比较多,就不写详细的代码了

其他注解

@NonNull

参数不能为空,不然会空指针异常

@Data(常用)

=@ToString+@EqualsAndHashCode+@Getter+@Setter

@NoArgsConstructor(常用)/@RequiredArgsConstructor(常用)/@AllArgsConstructor(常用)

无参构造、必填参数构造(@NonNull)、全参构造;生成构造函数功能较弱,有些时候需要自己写一些参数的构造函数,构造函数使用注释和自己写一些参数构造一起使用,有时候会启动不了。这个问题还没有找到原因。

@Getter/@Setter/@Getter(lazy=true)

自动创建get、set;lazy要使用此特性,请创建一个私有的final变量,用运行开销较大的表达式初始化它,并使用@Getter(lazy=true)注释字段。该字段将对代码的其余部分隐藏,并且在首次调用getter时,表达式的计算不会超过一次。

@ToString/@EqualsAndHashCode

自动创建tostring、equals、hashcode方法

@ToString(callSuper = true) 输出父类属性

@Log

直接在代码中使用log.info()之类的,log对象自动帮你创建好

@Cleanup:自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流

@Synchronized:用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock或$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值