Вопрос

Я хотел бы создать метод под названием «isBetween», возвращающий логическое значение, проверяющий, попадает ли дата GregorianCalendar между двумя другими.В качестве альтернативы я хотел бы просто определить операторы < и > для класса.Я новичок в Java, поэтому не уверен... могу ли я сделать что-нибудь из этого?Если да, то как?

Это было полезно?

Решение

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

Но тогда действительно ли вам нужен новый метод, чтобы сделать cal.after(startCal) && cal.before(endCal) ?

Другие советы

Нет, вы не можете добавлять методы к уже существующим классам, а также не можете перегружать операторы в Java.

В качестве альтернативы вы можете предоставить, например, статический служебный метод в своем собственном классе.

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

Как говорит Иоахим, статический метод в служебном классе — это лучший вариант, и если Java когда-нибудь получит методы расширения, аналогичные C# (я знаю, что они были предложены для Java 7, но я думать в данный момент они отсутствуют) вы можете изменить их на этом этапе.

Ох, и используйте Джода Время в любом случае :)

Вы должны попытаться расширить его:

class MyGregorianCalendar extends GregorianCalendar
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top