Есть ли способ добавить методы в GregorianCalendar в Java? - PullRequest
1 голос
/ 09 марта 2010

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

Ответы [ 4 ]

6 голосов
/ 09 марта 2010

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

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

1 голос
/ 09 марта 2010

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

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

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

1 голос
/ 09 марта 2010

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

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

0 голосов
/ 09 марта 2010

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

class MyGregorianCalendar extends GregorianCalendar
...