2010-09-21 106 views
10

來自Calendar.before(Object when)的javadoc:Calendar.before(Object when),爲什麼是Object?

返回此Calendar是否表示指定Object所表示的時間之前的時間。此方法相當於:

compareTo(when) < 0 

當且僅當如果是Calendar實例時。否則,該方法返回false。

爲什麼它接受一個對象,如果有人傳遞的東西不是日曆實例,它返回false?爲什麼不只是接受一個日曆實例?這使我在一段時間內在功能上看到了不正確的結果。

回答

7

我認爲沒有特別的理由。 java.util.Calendar有一些設計問題,我們不得不忍受,不幸的是。

+1

+1。請注意,Date對象(其設計問題日曆應該解決)具有一個不帶對象(但另一個日期)的before方法。不是特別一致的API。 – Thilo 2010-09-21 10:04:17

+4

「與...同住」是否意味着傾銷Joda Time? – ILMTitan 2010-09-21 15:23:17

-1

我認爲這可能是通過在before()方法中使用多態行爲來提供封裝。

1

請注意,該方法不是final(和類本身的抽象)。隨意將其子類化,並提供一個版本,該版本將採用Java的Date或JodaTime的LocalDate。如果你這樣看,那麼JDK的作者提供這樣一個通用的解決方案是非常有遠見的。

相關問題