如何在 Java 中使用链式调用

2,651 阅读1分钟

什么是链式调用?

最常接触链式调用是在JavaScript里,实现很简单,在调用某个对象的某个方法,在被调用的的方法返回当前这个对象,从而实现链式调用。

function createObj() {
  let obj = {};
  o.toStringFoo = "";
  o.addSomething = function(foo) {
    this.toStringFoo = foo;
    return this;
  }
  o.doSomething = function(content) {
    console.log(content);
    return this;
  }
  return obj;
}
/* 在这里我们实例化一个对象 */
var obj = new createObj();
/* 这里就是所谓的链式调用 */
var temp = obj.addSomething("hello,javascript")
        .doSomething("Hello,World");
/* 我们可以在控制台打印一下,看temp里究竟存放着什么 */
console.log(temp);

Java中实现如上所述的链式调用

那么在Java中我们如何实现同上的效果呢?估计看了上面的代码之后,聪明的人已经知道如何在Java中实现链式调用了,很简单,我们在每次调用某个对象的某个方法之后,在那个方法中返回当前对象就可以了。

public class Person {

  private String name;
  private int age;

  public String getName() {
    return this.name;
  }

  public Person setName(String name) {
    this.name = name;
    return this;
  }

  public int getAge() {
    return this.age;
  }

  public Person setAge(int age) {
    this.age = age;
    return this;
  }
}

public class MainMethod {
  public static void main(String[] args) {
    new Person().setName("SunZhenyu")
        .setAge(20);
  }
}

最后

那么我们为什么要用链式调用呢?想想,如果你有一个方法,要求传入参数为某一个对象,你是不是需要先new出来这个对象,然后分别去调用它相应的方法,这样代码繁琐、臃肿,链式调用就很好的帮我们解决了这个问题。