我试图弄清楚问题的最佳解决方案是什么。
我有一个对象,其中状态可能是三种可能之一,但它可以在运行时更改。我有三个状态标志,对象可以。
我没有使用ENUM
的经验,并试图弄清楚这是否是最好的方式。
我希望能够将特定标记设置为true
或false
,然后才能设置另一个标记。当我遍历数组列表中的这些对象列表时,我需要能够获得每个标志的状态。
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;
}
}
}
答案 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
字段。