Java實體類實現(xiàn)鏈式操作實例解析
這篇文章主要介紹了Java實體類實現(xiàn)鏈式操作實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
原來是這么寫bean的,單純的使用get、set方法,再加一個toString
package Model;
/**
* @author: Davion
* @date: 2019/12/11
* @description:
*/
public class User {
private Integer id;
private String name;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后使用的使用就是不斷的set
import Model.User;
/**
* @author: Davion
* @date: 2019/12/11
* @description:
*/
public class Main {
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setName("Davion");
System.out.println(user);
}
}
再簡單點就是使用Lombok自動生產(chǎn)get/set方法,當然今天說的不是Lombok的優(yōu)點,雖然是真的好用
但是今天突然看到一些新的操作:鏈式bean,具體如下,
修改User類如下:
package Model;
/**
* @author: Davion
* @date: 2019/12/11
* @description:
*/
public class User {
private Integer id;
private String name;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public Integer getId() {
return id;
}
public User setId(Integer id) {
this.id = id;
return this;
}
public String getName() {
return name;
}
public User setName(String name) {
this.name = name;
return this;
}
}
可以看到,和原來的區(qū)別就是修改了set方法,原來是沒有返回值,直接是設置某個屬性,但現(xiàn)在的返回類型是模型本省,返回值是this,
重點來了,接著客戶端使用的時候是這樣的:
import Model.User;
/**
* @author: Davion
* @date: 2019/12/11
* @description:
*/
public class Main {
public static void main(String[] args) {
User user = new User();
user.setId(1).setName("Davion");
System.out.println(user);
}
}
因為返回對象是this,所以可以接著使用當前模型的所有方法
這樣的鏈式操作能節(jié)省很多時間,而且也直觀簡潔了很多,而且對原來的寫法也沒有任何影響
因為平時都是使用Lombok的,所以不會自己寫get/set方法,那鏈式操作又怎么使用Lombok實現(xiàn)呢,
眾所周知,Lombok是使用注解的方式,讓代碼更簡潔,同理,那么要Lombok實現(xiàn)鏈式bean,應該也是使用相應的注解
這個注解就是 @Accessors(chain = true),意思是訪問器允許鏈式操作, 那么現(xiàn)在代碼就是:
package Model;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author: Davion
* @date: 2019/12/11
* @description:
*/
@Accessors(chain = true)
@Data
public class User {
private Integer id;
private String name;
}
客戶端代碼不需要變,這樣就實現(xiàn)了一個鏈式bean
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
springboot2如何禁用自帶tomcat的session功能
這篇文章主要介紹了springboot2如何禁用自帶tomcat的session功能,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Java實現(xiàn)LeetCode(1.兩數(shù)之和)
這篇文章主要介紹了Java實現(xiàn)LeetCode(兩數(shù)之和),本文使用java采用多種發(fā)放實現(xiàn)了LeetCode的兩數(shù)之和題目,需要的朋友可以參考下2021-06-06
MyBatis中調(diào)用存儲過程和函數(shù)的實現(xiàn)示例
在MyBatis中調(diào)用存儲過程和函數(shù)是一個相對高級的特性,本文主要介紹了MyBatis中調(diào)用存儲過程和函數(shù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
Java線程之間數(shù)據(jù)傳遞的實現(xiàn)示例(4種)
我們經(jīng)常會遇到父子線程數(shù)據(jù)傳遞(非調(diào)用參數(shù))的場景,本文主要介紹了Java線程之間數(shù)據(jù)傳遞的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08

