我正在尝试创建耐心和过敏类,并且对setAllergies中的列表过敏感到困惑,无论是否应该:
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;
}
}
最佳答案
allergies.add(allergies);
向自身添加一个对象。为什么这样做?
此外,您不能使用
add()
将列表添加到列表。您必须使用addAll()
。实际上,创建
allergies
实例时,null
字段是Patient
。结果,这样做:
allergies.invokeSomething(...);
将抛出NullPointerException
。此外,“ set”前缀具有覆盖/替换而不是添加的语义。
因此,您应该保持当前编写的方法:
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<>();
关于java - 在Java中设计类时在ArrayList中添加对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44873062/