欢迎访问我的技术博客:https://zhangzw.com/
所谓链式编程,即:方法可链式调用,方法调用完后返回对象本身,然后又可以继续调用该对象的方法。
常用的StringBuffer
就是链式编程的例子:
StringBuffer str = new StringBuffer();
str.append("a").append("b").append("c").append("d").append("e");
// 结果:abcde
假设在实际开发中有这样一个User
类(这是一个最简单的JavaBean):
public class User {
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
如果要新建一个对象,给属性设值,常规的写法是:
User u = new User();
u.setUserId(123456);
u.setUserName("张三");
// ...
如果使用链式编程方式,需要先修改Setter
方法,return this
:
public class User {
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public User setUserId(int userId) {
this.userId = userId;
return this;
}
public String getUserName() {
return userName;
}
public User setUserName(String userName) {
this.userName = userName;
return this;
}
}
同样给属性设值,则可以这样写:
User u = new User();
u.setUserId(123456).setUserName("张三");
是不是感觉代码简洁不少?可在需要重复调用Setter
方法的类上可以改成这种方式。
Lombok对链式编程的支持
这种场景Lombok也想到了,只需要在类上加上注解@Accessors(chain = true)
,这个类生成的Setter
方法就是支持链式调用的了:
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
@Accessors(chain = true) // Lombok链式编程
public class User {
@Getter
@Setter
private int userId;
@Getter
@Setter
private String userName;
}
可以看出编译后生成的Setter
方法是有返回User
对象本身的:
欢迎访问我的技术博客:https://zhangzw.com/
转载:https://blog.csdn.net/zhangzw0505/article/details/102486015
查看评论