在 class 构造函数中使用枚举

Using enum in an class constructor

我正在为即将到来的考试做一些复习,我对在对象的构造函数中使用枚举有点困惑。

这是我为 class country() 编写的代码,其中问题要求包括每个国家/地区对象的联合国成员身份。

public class Country {

    private String name;
    private enum Status {NOTMEMBER, GENERALASSEMBLY, TEMPORARYSC, PERMANENTSC};
    private boolean duesPaid;

    public Country(String name, Status status, boolean duesPaid) {
        this.name = name;
        this.Status = status;
        this.duesPaid = duesPaid;
    }

    public String getName() {
        return name;
    }

    public Status getStatus() {
        return Status;
    }

    public boolean hasPaidDues() {
        return duesPaid;
    }

    public void changeStatus(Status status) {
        this.Status = status;
    }
}

我想知道如何正确地将枚举作为参数传递。我知道枚举的语法是 enum.VARIABLE,但我在这方面尝试过的一切都没有正常工作。有更好的方法吗?

您的枚举声明必须是 public,否则调用者无法访问其值:

public enum Status {NOTMEMBER, GENERALASSEMBLY, TEMPORARYSC, PERMANENTSC};
public class Country 
{
    private String name;
    private boolean duesPaid;
    private Status status;
    
    public Country(String name, Status status, boolean duesPaid) {
        this.name = name;
        this.Status = status;
        this.duesPaid = duesPaid;
    }

    // getters + setters left out for brevity
}

如果在 class 中声明,它必须仍然是 public,然后可以用 Country.Status 访问,例如Country.Status.NOTMEMBER.