java链式写法—java中实现链式操作
概述
什么是java链式写法?
百度也没有给出很好的解释下面的是我的自己的理解:和链表的特点很类似:在链表中每个数据项都被包含在“链结点中”一个链结点是某个类的对象,这个类可以叫做Link。因为一个链表中有许多类似的链所以有必要用一个不同于链表类来表达链结点。每个Link对象中都包含一个对下一个链结点引用的字段(通常叫做next)但是链表本身对象是中有一个字段指向对第一个链结点的引用。
链式写法有哪些优点?
对于普通的编写代码
- 对程序员的业务要求中等要求
- 对方法的返回类型无要求
- 维护性强
链式编写代码
- 编程性强
- 可读性强
- 代码简洁
- 对程序员的业务能力要求高
- 不太利于代码调试
我们应该如何理解它呢?
总结一句:写别人看不明白的代码逼格更高 了.
我们日常有那些呢?
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
好了大概这是这样记录一下欢迎留言呀!