Flask接口签名sign原理与实例代码浅析
477
2022-12-19
Java实体类实现链式操作实例解析
这篇文章主要介绍了java实体类实现链式操作实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
原来是这么写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自动生产get/set方法,当然今天说的不是Lombok的优点,虽然是真的好用
但是今天突然看到一些新的操作:链式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 "Ushttp://er{" +
"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;
}
}
可以看到,和原来的区别就是修改了set方法,原来是没有返回值,直接是设置某个属性,但现在的返回类型是模型本省,返回值是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,所以可以接着使用当前模型的所有方法
这样的链式操作能节省很多时间,而且也直观简洁了很多,而且对原来的写法也没有任何影响
因为平时都是使用Lombok的,所以不会自己写get/set方法,那链式操作又怎么使用Lombok实现呢,
众所周知,Lombok是使用注解的方式,让代码更简洁,同理,那么要Lombok实现链式bean,应该也是使用相应的注解
这个注解就是 @Accessors(chain = true),意思是访问器允许链式操作, 那么现在代码就是:
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;
}
客户端代码不需要变,这样就实现了一个链式bean
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~