我有一个产品状态枚举,它包含 5 个状态,我需要 2 个枚举处于第一阶段,其他 3 个处于第二阶段,这可能吗?怎么办?
我尝试做另一个类并从枚举扩展,但这是不可能的,因为枚举是 final
public enum StatusEnum {
NEW,PROCESS,COOKING, DELIVERED, CANCELLED
}
if (Product p instance of StageOne){
p.setStatusEnum(COOKING);
} else {
throw new Exception("e");
}
我需要这个,因为如果状态枚举仅处于第一阶段,您可以取消产品
最佳答案
枚举可以像常规类一样具有字段和方法(但确保它们不可变通常是一个很好的主意,即创建后没有任何字段可以更改):
public enum StatusStage {
STAGE1,
STAGE2
}
public enum StatusEnum
NEW(StatusStage.STAGE1),
PROCESS(StatusStage.STAGE1),
COOKING(StatusStage.STAGE1),
DELIVERED(StatusStage.STAGE2),
CANCELLED(StatusStage.STAGE2);
public final StatusStage stage;
private StatusEnum(final StatusStage stage) {
this.stage = stage;
}
}
您甚至可以添加这样的方法:
public boolean canFrobnicate() {
return this.stage != StatusStage.STAGE2;
}
关于java - 枚举可以是两个阶段的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58170356/