链式写法

java链式写法—java中实现链式操作

概述

什么是java链式写法?

百度也没有给出很好的解释下面的是我的自己的理解:和链表的特点很类似:在链表中每个数据项都被包含在“链结点中”一个链结点是某个类的对象,这个类可以叫做Link。因为一个链表中有许多类似的链所以有必要用一个不同于链表类来表达链结点。每个Link对象中都包含一个对下一个链结点引用的字段(通常叫做next)但是链表本身对象是中有一个字段指向对第一个链结点的引用。

链式写法有哪些优点?

对于普通的编写代码

  1. 对程序员的业务要求中等要求
  2. 对方法的返回类型无要求
  3. 维护性强

链式编写代码

  1. 编程性强
  2. 可读性强
  3. 代码简洁
  4. 对程序员的业务能力要求高
  5. 不太利于代码调试
我们应该如何理解它呢?

​ 总结一句:写别人看不明白的代码逼格更高 了.

我们日常有那些呢?
  1. 在java中我们写javaweb中的请求:
String resBody = HttpRequest.post(url)
            .header("X-Auth-Token", this.getToken())
            .contentType("application/json;charset=utf8")
            .setConnectionTimeout(5000)
            .setReadTimeout(3000)
            .body(reqBody)
            .execute()
            .body();
1.1源码是如何实现的呢?
 public HttpRequest contentType(String contentType) {
        this.header(Header.CONTENT_TYPE, contentType);
        return this;//返回的对象
    }
public HttpRequest setReadTimeout(int milliseconds) {
        this.readTimeout = milliseconds;
        return this;//返回的对象
    }
 public T header(Header name, String value) {
        return this.header(name.toString(), value, true);//这个返回的是一个方法
    }
public T header(String name, String value, boolean isOverride) {
        if (null != name && null != value) {
            List<String> values = (List)this.headers.get(name.trim());
            if (!isOverride && !CollectionUtil.isEmpty(values)) {
                values.add(value.trim());
            } else {
                ArrayList<String> valueList = new ArrayList();
                valueList.add(value);
                this.headers.put(name.trim(), valueList);
            }
        }

        return this;//结果还是这个对象
    }//这个方法体实现的也this和上面的一致
下面给大家写个例子然后在分析一下吧
package com.pyb;

public class StudentDemo {

    //成员属性(属性名为name和score),满参构造方法
    private String name;
    private int score;

    public StudentDemo() {
    }

    public StudentDemo(String name, int score) {
        this.name = name;
        this.score = score;
    }

    //2个属性的get/set方法
    public String getName() {
        return name;
    }
    public StudentDemo setName(String name) {
        this.name = name;
        return this;
    }
    public int getScore() {
        return score;
    }
    public StudentDemo setScore(int score) {
        this.score = score;
        return this;
    }

    @Override
    public String toString() {
        return "StudentDemo{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }

    //实现类
    public static class  realizeStudent{
    public static void main(String[] args) {
        StudentDemo studentDemo = new StudentDemo();
      studentDemo.setName("pyb")
              .setScore(98);
        System.out.println(studentDemo.toString());
        //结果为:StudentDemo{name='pyb', score=98}
    }
    }
}
它的原理是什么呢?怎么理解?

在这里插入图片描述

最后分享一本关于算法的书
链接:https://pan.baidu.com/s/15xvC24X_dFk_OBMzm05EYA
提取码:ithe

好了大概这是这样记录一下欢迎留言呀!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值