Ответ 1
Думаю, для этого нет особых причин. java.util.Calendar
имеет некоторые проблемы с дизайном, с которыми нам приходится иметь дело, к сожалению.
Из javadoc Calendar.before(Object when)
:
Возвращает, представляет ли этот календарь время до времени, представленного указанным объектом. Этот метод эквивалентен:
compareTo(when) < 0
тогда и только тогда, когда используется экземпляр календаря. В противном случае метод возвращает false.
Почему он принимает объект, если кто-то передает что-то, что не экземпляр календаря, он возвращает false? Почему бы просто не принять экземпляр календаря? Это заставило меня наблюдать за неправильными результатами в функциональности довольно долгое время.
Думаю, для этого нет особых причин. java.util.Calendar
имеет некоторые проблемы с дизайном, с которыми нам приходится иметь дело, к сожалению.
Обратите внимание, что метод не является final
(и сам абзац класса). Не стесняйтесь подклассифицировать его и предоставить версию, которая будет принимать Javas Date
или JodaTimes LocalDate
. Если вы так выразились, выясняется, что авторы JDK были очень дальновидны, чтобы предоставить такое общее решение.
Я думаю, что это может быть обеспечение инкапсуляции с использованием полиморфного поведения в методе before().