Java链式编程

举报
多米诺的古牌 发表于 2022/08/28 18:35:17 2022/08/28
【摘要】 为什么要使用Java链式编程呢?我们在Java语言编程的过程中,肯定少不了创建对象的,但是创建对象后,我们设置属性需要不停的使用对象.setXXX( )方法,然后再换行继续使用对象.setXXX( )方法,这样创建出来的对象需要被我们重复的写很多遍,效率低而且代码可读性也很差,怎么能让我们代码能不用重复书写对象而更优雅的编写出来呢,链式编程就能帮我们实现这个效果,我们可以在创建对象后直接在后面.

 1.为什么要使用Java链式编程

为什么要使用Java链式编程呢?我们在Java语言编程的过程中,肯定少不了创建对象的,但是创建对象后,我们设置属性需要不停的使用对象.setXXX( )方法,然后再换行继续使用对象.setXXX( )方法,这样创建出来的对象需要被我们重复的写很多遍,效率低而且代码可读性也很差,怎么能让我们代码能不用重复书写对象而更优雅的编写出来呢,链式编程就能帮我们实现这个效果,我们可以在创建对象后直接在后面.setXXX().setXXX()...这样链式的设置完各个属性。

2.Java链式编程的优缺点

链式编程可以使得代码可读性变得更高,链式编程也比较好实现,它的原理就是返回一个this对象,即返回对象本身,这样就可以达到链式的效果。

2.1 链式编程的优点有:编程性更强、可读性更强、代码更简洁。
2.2 链式编程的缺点有:对程序员的业务能力要求更高、不太利于代码调试。

3.Java链式编程的实现

3.1 之前我们创建对象后设置属性是这样的,需要多次重复的写出对象的名字.set去设置:

public class Student{
    private Integer id;
    private String name;
    private String email;
    private String phone;

    /**
    setter/getter方法省略
    */
}
...
Student s = new Student();
s.setId(1);
s.setEmail("xxxx@123.com");
s.setName("zhangsan");
user.setPhone("1135654635");
3.2 通过简单改造,我们将各个属性中的set方法的返回值设置为对象本身,并且返回类型设置为对象本身的类型这样就可以实现链式编程了,很明显代码简捷了很多,如果遇到很多属性的情况这会显得更加明细。

    public Student setId(Integer id) {
        this.id = id;
        return this;
    }


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


    public Student setEmail(String email) {
        this.email = email;
        return this;
    }



    public Student setPhone(String phone) {
        this.phoneNum = phone;
        return this;
    }
...
Student s = new Student();
s.setId(1).setName("zhangsan").setPhone("113334343")setEmail("xxxxx@123.com");
3.3 lombok实现的方式

项目中我们常常引入lombok来简化编程,只需要@Data就可以省略有参、无参构造方法以及属性中的set和get方法,那么get和set方法已经省略了,我们要如何设置set方法中的返回值和返回类型呢?其实lombok已经帮我们实现了,只需增加@Accessors(chain = true) 注解就可开启链式编程了。

@Accessors(chain = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student{
    private Integer id;
    private String name;
    private String email;
    private String phone;
    
}

以上就是Java链式编程的简单实现和使用,让我们的代码变得更优雅简捷起来吧~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。