java 鏈式呼叫
阿新 • • 發佈:2019-01-02
前言
現在很多開源庫或者程式碼都會使用鏈式呼叫。因為鏈式呼叫在很多時候,都可以使我們的程式碼更加簡潔易懂。以下 Student 類有多數個屬性,讓我們看看非鏈式呼叫和鏈式呼叫有何區別。
非鏈式呼叫
Main 類:
/**
* Created by chenxuxu on 17-1-10.
*/
public class Main {
public static void main(String[] args) {
Student stu = new Student();
stu.setAge(22 );
stu.setName("chenxuxu");
stu.setGrade("13級");
stu.setNo("123456789");
stu.setMajor("軟體工程");
}
}
Student 類:
/**
* 學生類
*
* Created by chenxuxu on 17-1-10.
*/
public class Student {
/**
* 姓名
*/
private String name;
/**
* 年齡
*/
private int age;
/**
* 學號
*/
private String no;
/**
* 年級
*/
private String grade;
/**
* 專業
*/
private String major;
//...此處省略getter&setter
}
鏈式呼叫
Main 類:
/**
* Created by chenxuxu on 17-1-10.
*/
public class Main {
public static void main(String[] args) {
Student.builder()
.stuName("chenxuxu")
.stuAge(22)
.stuGrade("13級")
.stuMajor("軟體工程")
.stuNo("123456789");
}
}
Student 類:
/**
* 學生類
*
* Created by chenxuxu on 17-1-10.
*/
public class Student {
/**
* 不能通過new初始化
*/
private Student(){}
public static Builder builder(){
return new Builder();
}
static class Builder{
/**
* 姓名
*/
private String name;
/**
* 年齡
*/
private int age;
/**
* 學號
*/
private String no;
/**
* 年級
*/
private String grade;
/**
* 專業
*/
private String major;
public Builder stuName(String name){
this.name = name;
return this;
}
public Builder stuAge(int age){
this.age = age;
return this;
}
public Builder stuNo(String no){
this.no = no;
return this;
}
public Builder stuGrade(String grade){
this.grade = grade;
return this;
}
public Builder stuMajor(String major){
this.major = major;
return this;
}
}
}
結論
通過鏈式呼叫後,程式碼看起來簡潔易懂。