2010-09-21 69 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的作者提供这样一个通用的解决方案是非常有远见的。

相关问题