【问题标题】:Using enum in an class constructor在类构造函数中使用枚举
【发布时间】:2021-10-31 08:55:40
【问题描述】:

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

这是我为 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 Constructor(YourEnum enumValue)。提示:您的枚举必须是可公开访问的,否则其他调用者无法使用/将其传递给您的构造函数。
  • 嗯,好的,谢谢,这是有道理的。我认为枚举只能有一个私有范围吗?可能记错了

标签: java enums


【解决方案1】:

你的枚举声明必须是公开的,否则调用者不能访问它的值:

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
}

如果在类中声明,它必须仍然是公共的,然后可以使用Country.Status 访问,例如Country.Status.NOTMEMBER.

【讨论】:

  • 非常感谢,真的很有帮助!我的印象是枚举必须是私有的,这显然是不正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 2015-07-09
  • 2011-07-03
相关资源
最近更新 更多