Calendar.before (Объект когда), почему Объект?

От агаCalendar.before(Object when):

Возвращает, представляет ли этот Календарь время до времени, представленного указанным объектом. Этот метод эквивалентен:

compareTo(when) < 0

тогда и только тогда, когда это экземпляр календаря. В противном случае метод возвращает false.

Почему он принимает объект, если когда кто-то передает что-то, что не является экземпляром календаря, он возвращает false? Почему бы просто не принять экземпляр календаря? Это заставляло меня наблюдать за некорректными результатами в функционировании в течение довольно долгого времени.

Ответы на вопрос(3)

final (и сам класс абстрактный). Не стесняйтесь подкласс и предоставить версию, которая будет принимать JavaDate или JodaTime'sLocalDate, Если вы видите это таким образом, оказывается, что авторы JDK очень дальновидны, предлагая такое общее решение.

что это может быть для обеспечения инкапсуляции с помощью полиморфного поведения в методе before ().

Решение Вопроса

java.util.Calendar К сожалению, у нас есть некоторые проблемы с дизайном.

 ILMTitan21 сент. 2010 г., 17:23
Под "жить с" вы подразумеваете дамп в пользу Joda Time?
 Thilo21 сент. 2010 г., 12:04
+1. Обратите внимание, что объект Date (чьи проблемы проектирования должен был решить Calendar) имеет метод before, который не принимает Object (но другой Date). Не особенно последовательный API.

Ваш ответ на вопрос