Calendar.before(Object when), почему Object?

Из javadoc Calendar.before(Object when):

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

compareTo(when) < 0

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

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

Ответ 1

Думаю, для этого нет особых причин. java.util.Calendar имеет некоторые проблемы с дизайном, с которыми нам приходится иметь дело, к сожалению.

Ответ 2

Обратите внимание, что метод не является final (и сам абзац класса). Не стесняйтесь подклассифицировать его и предоставить версию, которая будет принимать Javas Date или JodaTimes LocalDate. Если вы так выразились, выясняется, что авторы JDK были очень дальновидны, чтобы предоставить такое общее решение.

Ответ 3

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