Java - 每个枚举值的真/假

时间:2014-07-15 23:20:52

标签: java enums

我试图弄清楚问题的最佳解决方案是什么。

我有一个对象,其中状态可能是三种可能之一,但它可以在运行时更改。我有三个状态标志,对象可以。

我没有使用ENUM的经验,并试图弄清楚这是否是最好的方式。

我希望能够将特定标记设置为truefalse,然后才能设置另一个标记。当我遍历数组列表中的这些对象列表时,我需要能够获得每个标志的状态。

class Patient 
{


//REST OF the object

public enum Status 
{
     INPATIENT(false),
     OUTPATIENT(false),
     EMERGENCY(false);


      private final boolean isStatus;

      Status(boolean isStatus) 
      {
        this.isStatus = isStatus;
      }

      public boolean isStatus()
      {
        return this.isStatus;
      }

    }

}

2 个答案:

答案 0 :(得分:8)

enum的工作原理并非如此。你不会包含boolean 标志,而是这样做:

public enum Status {
   INPATIENT,
   OUTPATIENT,
   EMERGENCY;
}

public class Patient {
    private Status status;

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

public class SomeService {
     public void someMethod(final Patient patient) {
         patient.setStatus(Status.INPATIENT);
         patient.setStatus(Status.OUTPATIENT);
         patient.setStatus(Status.EMERGENCY);
    }
}

键入enum的变量可以保存enum(或null)的任何一个值。如果要更改状态,请更改变量引用的枚举值。 (Enum s与class es不同,因为它们未使用new关键字进行实例化,而是直接引用,如上面的代码所示。)

答案 1 :(得分:1)

public enum StatusFlag { OUTPATEINT, INPATIENT, EMERGENCY}

public class Patient {

    private StatusFlag status;

    // Here goes more code
}

这将确保无法将任何其他值分配给status字段。