Есть ли способ добавить методы в GregorianCalendar в Java?
-
18-09-2019 - |
Вопрос
Я хотел бы создать метод под названием «isBetween», возвращающий логическое значение, проверяющий, попадает ли дата GregorianCalendar между двумя другими.В качестве альтернативы я хотел бы просто определить операторы < и > для класса.Я новичок в Java, поэтому не уверен... могу ли я сделать что-нибудь из этого?Если да, то как?
Решение
Java не поддерживает обезьяний патчинг или перегрузку операторов, но вы можете создавать подклассы GregorianCalendar
и добавьте любые необходимые вам методы.
Но тогда действительно ли вам нужен новый метод, чтобы сделать cal.after(startCal) && cal.before(endCal)
?
Другие советы
Нет, вы не можете добавлять методы к уже существующим классам, а также не можете перегружать операторы в Java.
В качестве альтернативы вы можете предоставить, например, статический служебный метод в своем собственном классе.
Я бы посоветовал против расширяя класс - вы не добавляете никакого поведения, специфичного для экземпляров определенного класса, вы выражаете логику, применимую для любого GregorianCalendar
(или, возможно, вообще любой календарь).
Как говорит Иоахим, статический метод в служебном классе — это лучший вариант, и если Java когда-нибудь получит методы расширения, аналогичные C# (я знаю, что они были предложены для Java 7, но я думать в данный момент они отсутствуют) вы можете изменить их на этом этапе.
Ох, и используйте Джода Время в любом случае :)
Вы должны попытаться расширить его:
class MyGregorianCalendar extends GregorianCalendar