【发布时间】:2022-01-19 09:30:28
【问题描述】:
我有一个扩展抽象类“用户”的“客户端”类:
public abstract class User {
private Long id;
private String firstName;
private String lastName;
private String email;
//getters and setters
}
public class Client extends User{
private List<Account> accountList;
//getters and setters
}
我已经为“客户端”类编写了构建器,但是我无法访问用户的字段(id、firstName、lastName、email)以在构建中使用它。怎么做?
public class Client extends User {
private List<Account> accountList;
public static Builder builder() {
return new Client().new Builder();
}
public class Builder {
private Builder() {
}
public Builder setAccountList(List<Account> accountList) {
Client.this.accountList = accountList;
return this;
}
public Client build() {
return Client.this;
}
}
}
【问题讨论】:
-
使它们受到保护而不是私有,以授予对派生类的访问权限。
-
使用您遗漏的 getter 和 setter,而不是尝试直接访问字段...
-
你可以创建一个
User.Builder类,你的Client.Builder可以继承
标签: java inheritance design-patterns abstract builder