在Java中设计类时,在ArrayList中添加对象

时间:2017-07-02 16:44:34

标签: java oop

我正在尝试创建患者和过敏类,我对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;
    }
}

1 个答案:

答案 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<>();