2012-04-07 11 views
7

In Scala è possibile utilizzare l'annotazione @BeanProperty per generare automaticamente getter e setter su un campo.Come creare annotazioni personalizzate come BeanProperty

Come posso creare la mia annotazione che si comporta in questo modo?

Sono interessato a creare annotazioni che modificano il codice sorgente, come fa @BeanProperty.

Come esempio, come è possibile creare un'annotazione che ha generato solo metodi get?

Grazie.

risposta

9

Due parole: compiler plugin. Non è facile, e la documentazione è scarsa, ma questo è un modo per farlo.

Le versioni future di Scala avranno probabilmente macro support, che offre la stessa flessibilità.

+0

Ho pensato che l'annotazione fosse qualcosa di più facile da integrare, ma non c'era alcuna fonte nella classe BeanProperty. Aspetterò il supporto per le macro, che probabilmente si comporterà più facilmente dei plugin del compilatore (che non posso usare a causa di alcune restrizioni). Molte grazie. –

+0

@ViniciusSeufitele - sì, 'BeanProperty' è solo un'annotazione; è il compilatore che fa il lavoro di generare i metodi extra. – leedm777

+2

Ora abbiamo macro, possiamo avere una risposta aggiornata? :)) – Edmondo1984

Problemi correlati