稀土掘金 稀土掘金

使用lombok 实现链式编程

这是我参与更文挑战的第13天,活动详情查看: 更文挑战

什么是链式编程

链式编程就是可以通过方法. 的方式不断调用,其原理就是返回一个this对象,就是返回本身,达到链式效果。

我们经常用的 StringBuffer 就是实现了链式的写法。

image.png 这样使用起来是不是很爽,其实就是在设值完之后返回当前this对象。

StringBuffer#append()源码:
image.png

lombok 链式编程

引入依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
</dependency>

@Accessors(chain = true)

lombok 提供该方式写法的实现,只需要在Bean对象上加上一个 @Accessors(chain = true) 即可。

@Accessors(chain = true)
@Data
public class Student {
    private String name;
    private int age;
}

通过观察可以看到set方法返回对象为自己,这样代码简洁多了 ,而且实现了链式编程。 image.png

lombok 静态的链式编程

静态的链式编程 比 普通的链式编程 的好处:

  • 创建对象更简洁;
  • 可以在静态方法、静态代码块等中使用;
  • 对于必输字段,可以强制要求。
import lombok.*;
import lombok.experimental.Accessors;

@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class Student {
	@NonNull
	private String name;
	private int age;
}

如下使用,这样不仅实现了链式编程,还实现了静态创建。

@Test
public void test1(){
    Student ss = Student.of("zhangsan").setAge(22);
    System.out.println(ss.getAge());
    System.out.println(ss.getName());
}

builder模式的链式Bean

builder模式的链式Bean原理为:在bean里面创建一个 静态builder方法 和一个 静态内部Builder类 ,通过调用静态builder方法来创建 Builder类,然后通过 Builder类 中的 build方法直接创建一个Bean,具体如下:

@Data
public class StudentBean {
    private String name;
    private int age;

    public static Builder builder() {
            return new Builder();
    }

    public static class Builder{
            private String name;

            private int age;

            public Builder name(String name) {
                    this.name = name;
                    return this;
            }

            public Builder age(int age) {
                    this.age = age;
                    return this;
            }

            public StudentBean build() {
                    StudentBean studentBean = new StudentBean();
                    studentBean.setName(name);
                    studentBean.setAge(age);
                    return studentBean;
            }
    }
}

使用写法:

StudentBean studentBean = StudentBean.builder().name("zhangsan").age(11).build();

lombok 实现 builder模式的链式bean

这样就实现了一个builder模式的链式bean。其实用lombok就一个注解的事情。

import lombok.*;

@Builder
@Data
public class StudentBean {
	private String name;
	
	private int age;
}

关注+点赞👍收藏❤️不迷路

文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话
各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

代做工资流水公司镇江对公流水代做临沂车贷流水查询漳州银行流水PS样本宜春对公账户流水多少钱温州做公司流水三亚对公账户流水图片临沂办理企业贷流水湘潭公司银行流水代开绵阳贷款流水公司石家庄签证银行流水 制作邯郸打签证工资流水扬州企业对私流水公司苏州背调流水图片金华薪资银行流水开具武汉银行流水修改开具开封查企业贷流水保定办对公流水鞍山做工资流水湛江公司流水费用太原代开流水账单信阳开流水单遵义签证银行流水 费用兰州自存银行流水模板南昌代开企业对公流水宜春入职工资流水制作天津做房贷收入证明邢台入职银行流水图片芜湖工资银行流水代开代开入职流水阜阳开企业对私流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化