我知道我可以通過使用Guava的Preconditions類或通過提取方法isValidDayOfWeek()
即興發揮這一點(消除顯式拋出)。但那不是我想要的。有沒有一種方法可以在不使用switch語句的情況下簡化這種邏輯?此檢查確保startDayOfWeek
是本週7個值之一。在先決條件檢查中簡化if邏輯
public static TimeSlice getPreviousWeek(Date referenceDate, int startDayOfWeek)
{
if (!((startDayOfWeek == Calendar.SUNDAY) || (startDayOfWeek == Calendar.MONDAY) || (startDayOfWeek == Calendar.TUESDAY)
|| (startDayOfWeek == Calendar.WEDNESDAY) || (startDayOfWeek == Calendar.THURSDAY)
|| (startDayOfWeek == Calendar.FRIDAY) || (startDayOfWeek == Calendar.SATURDAY)))
{
throw new IllegalArgumentException("getPreviousWeek(): invalid startDayOfWeek:" + startDayOfWeek);
}
}
你想要的是像'startDayOfWeek是{Calendar.SUNDAY ... Calendar.SATURDAY}'。不幸的是,Java沒有實現原始集合。 – 2012-02-03 18:01:14
當然,您可以注意到本週的日子[記錄在日曆文檔中](http://docs.oracle.com/javase/1.5.0/docs/api/constant-values.html#java .util.Calendar.SATURDAY)的值爲1..7,只需檢查> = SUNDAY和<= SATURDAY的邊界,但這太過於依賴實現。 – 2012-02-03 18:07:10