Qualcuno è a conoscenza di una libreria che utilizza le tecniche (annotazioni e classworking) descritte in this article per generare automaticamente i metodi Object standard suString(), equals() e hashcode() per le classi java standard?Qualche libreria Java utilizza annotazioni per la generazione del codice?
6
A
risposta
4
Sì, progetto Lombok fa questo. Vedi http://projectlombok.org. Non supporta solo javac, ma anche Eclipse. Quindi i metodi non sono nel codice sorgente, ma vengono visualizzati nella vista struttura.
0
Non ho certamente visto questo e non sono veramente sicuro di quale valore ne ricaveremo. Trovo che la generazione automatica di toString
di solito non sia quello che si desidera quando si analizzano i file di registro e la maggior parte degli IDE dispongono di strumenti che consentono di generare implementazioni hashCode
e equals
, sebbene questi non riflettano automaticamente le modifiche dello schema all'interno della classe.
Non ci sarebbe 2 opzioni di attuazione del presente:
- fase di compilazione della classe di annotazione che viene elaborato (ad esempio dal proprio IDE) per generare i relativi metodi. Le annotazioni possono modificare il codice byte generato delle classi in cui sono dichiarate? Penso che questa appraoch sia una pessima idea perché non si può sapere cosa sta succedendo guardando il codice sorgente
- Annotazione di runtime sui metodi rilevanti per indicare che dovrebbero essere valutati tramite il meccanismo speciale. Questo richiede ancora di dichiarare e annotare i vostri metodi e io non sono anche sicuro di come si sarebbe effettivamente metodo intercetta chiamate a usare l'annotazione in ogni caso
Molto interessante, anche se penso che farò ancora con POJO e IDE –