Domanda

Mi piacerebbe fare un metodo chiamato "isBetween" ritorno un valore booleano, vedere se una data GregorianCalendar cade tra altri due. In alternativa, mi piacerebbe definire solo gli operatori di per la classe. Sono abbastanza nuovo per Java, quindi non sono sicuro .... posso anche fare entrambe le cose? Se sì, come?

È stato utile?

Soluzione

Java non supporta monkeypatching o l'overloading degli operatori, ma sentitevi liberi di sottoclasse GregorianCalendar e aggiungere qualsiasi metodo è necessario.

Ma poi, non si ha realmente bisogno di un nuovo metodo per fare cal.after(startCal) && cal.before(endCal)?

Altri suggerimenti

No, non è possibile aggiungere metodi classi pre-esistenti e non si può fare l'overloading degli operatori sia in Java.

In alternativa, si potrebbe fornire un metodo di utilità statico nella propria classe, per esempio.

Vorrei consigliare contro estendendo la classe - non si è aggiunta ogni comportamento che è specifico per le istanze di una classe particolare, si sta esprimendo la logica che è applicabile per qualsiasi GregorianCalendar (o forse qualsiasi calendario a tutti).

Come dice Joachim, un metodo statico in una classe di utilità è la strada da percorrere - e se Java mai guadagna metodi di estensione come da C # (so che sono stati suggeriti per Java 7, ma I pensare sono fuori al momento) è possibile modificare in quel punto.

Oh, e utilizzare Joda Tempo comunque:)

Si dovrebbe cercare di estenderlo:

class MyGregorianCalendar extends GregorianCalendar
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top