Existe uma maneira de adicionar métodos para GregorianCalendar em Java?
-
18-09-2019 - |
Pergunta
Eu gostaria de fazer um método chamado "isBetween" retornando um booleano, vendo se uma data GregorianCalendar cai entre dois outros. Alternativamente, eu gostaria de apenas definir operadores de
Solução
Java não suporta monkeypatching ou sobrecarga de operadores, mas sente livre GregorianCalendar
subclasse e adicionar o que os métodos que você precisa.
Mas então, você realmente precisa de um novo método para fazer cal.after(startCal) && cal.before(endCal)
?
Outras dicas
método Não, você não pode adicionar a pré-existentes aulas e você não pode fazer sobrecarga de operador seja em Java.
Como alternativa, você poderia fornecer um método utilitário estático em sua própria classe, por exemplo.
Eu aconselharia contra estendendo a classe - você não está adicionando qualquer comportamento que é específico para instâncias de uma classe particular, você está expressando a lógica que é aplicável para qualquer GregorianCalendar
(ou possivelmente qualquer calendário em tudo).
Como Joachim diz, um método estático em uma classe de utilitário é o caminho a percorrer - e se o Java sempre ganha métodos de extensão como por C # (eu sei que eles foram sugeridos para Java 7, mas eu pensar eles estão fora no momento), você pode modificá-los nesse ponto.
Oh e usar Joda Tempo de qualquer maneira:)
Você deve tentar estendê-lo:
class MyGregorianCalendar extends GregorianCalendar