我正在尝试创建患者和过敏类,我对setAlergies中的List过敏感到困惑,是否应该:
this.allergies = allergies;
或
allergies.add(allergies);
患者类:
public class Patient {
private List<Allergy> allergies;
public List<Allergy> getAllergies() {
return allergies;
}
public void setAllergies(List<Allergy> allergies) {
this.allergies = allergies;
}
}
过敏类:
public class Allergy {
private String name;
private Severity severity;
public Allergy(String name, Severity severity) {
this.name = name;
this.severity = severity;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Severity getSeverity() {
return severity;
}
public void setSeverity(Severity severity) {
this.severity = severity;
}
}
答案 0 :(得分:1)
allergies.add(allergies);
为自己添加一个对象。
为什么这样做?
此外,您无法使用add()
向列表添加列表。
您必须使用addAll()
。
实际创建allergies
实例时,null
字段为Patient
。
因此,执行此操作:allergies.invokeSomething(...);
将抛出NullPointerException
。
此外,&#34;设置&#34; prefix有一个语法来覆盖/替换,而不是添加
所以你应该保留你现在写的方法:
public void setAllergies(List<Allergy> allergies) {
this.allergies = allergies;
}
现在,如果您想提供一种方法将Allergies
添加到Allergies
字段中包含的allergies
个对象,则应提供方法addAllergies()
:
public void addAllergies(List<Allergy> allergies) {
this.allergies.addAll(allergies);
}
您还应该在其声明(或allergies
的构造函数)中初始化Patient
字段:
private List<Allergy> allergies = new ArrayList<>();