【发布时间】:2021-11-29 06:02:59
【问题描述】:
您好,我有几个月的enum。
public enum Months{
JANUARY, FEBUARY, MARCH,
APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
}
在服务中,我有一个方法,只有在月份大于 MARCH 即 APRIL, MAY, .... 时才有效。怎样才能把下面这行写得更有说服力:
public void monthCheck(Object object){
if (object.month!= Months.JANUARY || object.month!= Months.FEBUARY || object.month != Months.MARCH){
//do something here
}
}
编辑:我不能使用序数,因为我还有其他用例,例如:
如果我有 PENDING、PREPARING、PREPARED、DELIEVERED、COMPLETED、RETURNED 的状态枚举。我只想显示状态为 DELIEVED、COMPLETED 或 RETURNED 的订单。 我想写一个这样的方法,只有当状态是 DELIEVED、COMPLETED 或 RETURNED 时才返回
if (order.getStatus()=={DELIEVERED, COMPLETED or RETURNED})
{return order}
else{
throw new exception ("not valid status at this point");
}```
【问题讨论】:
-
为什么是你自己的枚举?为什么不使用来自
java.time的那个,然后您可以使用常规的java.time构造来查看月份是否在一个之后。 -
@M.Deinum 我还有其他用例,我将与订单状态进行比较。就像仅在状态为 PAID 或 DELIEVED 时显示,但还有其他状态,如 PREPARING_ORDER、CANCELED 等
-
这仍然不意味着您不能使用
java.time提供的一个(或将其用于日期/月份比较)。 -
@M.Deinum 看到这种情况:我有 statuses 的枚举 public enum Statuses{ PENDING, PREPARING, PREPARED, DELIVERED, COMPLETED, RETURNED; }``` 我只想显示状态为已交付、已完成或已返回的订单。我想写这样的方法 if (order.getStatus()=={DELIIEVERED, COMPLETED or RETURNED}){return order} else{throw exception ("not valid status at this point")}
-
您的问题是关于特定月份的而不是其他枚举。
标签: java spring spring-boot enums enumeration