在经年累月的开发中,你是不是已经对动辄数行的.setXXX()
方法厌烦了呢?在这篇博文中,我将介绍一个小技巧,可以稍稍让你的代码变得美观一些。
前言
通常来说,一个POJO大致上会是这样的
1 | public class Student { |
然后,在赋值的时候,会是这样的
1 | Student james = new Student(); |
上面这三行set方法,本来没干什么事,却要写3行代码六十多个字,是不是看起来很难受,写起来很费劲?
那么,这时候就可以通过链式调用setter来显著减少代码行数。
Setter的链式调用
首先,要实现链式调用setter,就得稍微修改一下setter方法。放心,改动量是很小的,对业务是没有影响的,操作也是一劳永逸的。
具体做法呢,就是让setter返回这个POJO类型,而不是void,然后将this
返回,比如这样:
1 | public Student setName(String name) { |
然后,在创建对象的时候,就可以这样:
1 | Student student = new Student().setName("james").setAge(22).setScore(80); |
怎么样?是不是突然变得很短很简洁?写起来是不是很方便?
但是,要一个个改那么多setter,也挺麻烦的,特别是IDE里面还不一定能自动化,有没有更好的办法?
答案是,有!
是啥呢?
Lombok!
用Lombok实现setter的链式调用
Lombok是一个自动生成模版代码的工具,像构造方法啊、getter和setter啊,都可以用一个或多个注解来代替,然后在编译期由Lombok替你写这部分的代码。如果你还没用过,那么请务必学习和试用一下,它可以为你省下那些浪费在模版代码上的时间。
在引入了Lombok之后,你就可以把上文的Student
类重构成这样子了:
1 |
|
是的,你不再需要去写getter和setter了,更不需要一个个的去修改来让它支持链式调用了。只需要两个注解,就可以完成上面的一大片工作。
第一行的@Data
注解,是一系列注解的集合,用来生成一系列的模版代码。由于这不是本文重点,所以就不再展开说了。
第二行的@Accessors
注解,就是这里的重点了,它用来设定Lombok应该怎样生成setter和getter代码。而其中的chain
属性,就是打开链式setter的开关,将它打开之后,就可以生成支持链式调用的setter方法。
然后,你就可以像上文一样,去享受链式调用了。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!