Calendar.before (Объект когда), почему Объект? - PullRequest
10 голосов
/ 21 сентября 2010

Из Javadoc Calendar.before(Object when):

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

compareTo(when) < 0

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

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

Ответы [ 3 ]

7 голосов
/ 21 сентября 2010

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

1 голос
/ 07 июня 2012

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

0 голосов
/ 21 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...