本人第一次接触链式编程,开始并不是多懂什么时链式编程,但是在查阅了一些资料后有了一个初步的理解,因而写下此文章,以便以后学习理解。
难么说到链式编程,什么是链式编程呢?
定义(个人理解):链式编程就是在对象调用方法时,这个方法会返回一个this对象,然后就可以继续调用其他的方法,从而形成一个像一条链条的形式一样可以一直调用下去当然前提是每次调用都会返回this对象。
从上面来看还是有点懵,那就来看下面的代码:
传统的pojo类的写法如下:
public class Person {
private String name;
private Integer age;
private String sex;
public String getName() {
return name;
}
public viod setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
而链式编程的pojo类的写法如下:
public class Person {
private String name;
private Integer age;
private String sex;
public String getName() {
return name;
}
public Person setName(String name) {
this.name = name;
return this;
}
public Integer getAge() {
return age;
}
public Person setAge(Integer age) {
this.age = age;
return this;
}
public String getSex() {
return sex;
}
public Person setSex(String sex) {
this.sex = sex;
return this;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
有没有发现有什么不一样?
没错就是set方法的类型变了,传统的set方法类型为void并且没有返回值,而链式编程的pojo类的set方法类型为pojo类,且又有返回值。返回值就是pojo类的对象。
先来看一下传统对pojo类的调用;
public class TestLink {
@Test
public void testPerson() {
Person p1 = new Person();
p1.setAge(10);
p1.setName("xiaowang");
p1.setSex("男");
System.out.println(p1);
}
}
这里每次要对对象中的属性进行赋值时都要p1.setXXX()来赋值
再来看链式调用:
public class TestLink {
@Test
public void testPerson() {
Person p2 = new Person();
p2.setName("xiaoxiang").setAge(20).setSex("女");
System.out.println(p2);
}
}
对比上下文就可以看出这里的对象p2只写了一次却可以一直“.”set方法,这是为什么呢?
就像上面说到了链式pojo中的set方法的类型为pojo类,再调用它时,会返回一个pojo类对象(就是上面的return this),此时在我们的p2调用了setName()方法后会再次返回一个person对象这时我们的person对象便可以继续调用setAge()方法,从而也就形成了
p2.setName("xiaoxiang").setAge(20).setSex("女");
这样的来链式调用。
这是目前我对链式编程的一点点理解,如果文章中有什么不对的地方望请大家指正,谢谢。
来自学Java的小萌新的瑟瑟发抖?