在使用 Google 服务库时,我在 Android 编程中经常看到一种编码风格,它们在初始化类的实例后使用点来调用方法。
例如,假设我有一个 Person 类:
public class Person {
private String firstName;
private String lastName;
private String occupation;
private String primarySkill;
private String secondarySkill;
/* ******************
* CONSTRUCTOR
* ******************/
public Person(String firstName, String lastName) {
setFirstName(firstName);
setLastName(lastName);
}
/* ******************
* MUTATORS
* ******************/
// firstName Setter:
public void setFirstName(String firstName) {
this.firstName = firstName;
}
// lastName Setter:
public void setLastName(String lastName) {
this.lastName = lastName;
}
// occupation Adder:
public void addOccupation(String occupation) {
this.occupation = occupation;
}
// primarySkill Adder:
public void addPrimarySkill(String primarySkill) {
this.primarySkill = primarySkill;
}
// secondarySkill Adder:
public void addSecondarySkill(String secondarySkill) {
this.secondarySkill = secondarySkill;
}
}
现在,当我创建此类的实例时,我希望能够执行以下操作:
Person bob = new Person("Bob", "Anderson")
.addOccupation("Student")
.addPrimarySkill("Java")
.addSecondarySkill("SQL");
但是这给了我语法错误。我怎样才能构建一个可以让我做到这一点的类?
最佳答案
您正在寻找的称为方法链
。修改您的 setter 以返回 this
:
// occupation Adder:
public Person addOccupation(String occupation) {
this.occupation = occupation;
return this;
}
关于java - 在Java中: How do I create a class that can be initialized and call its methods in one statement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078552/