2012-04-07 15 views
7

En Scala, es posible usar la anotación @BeanProperty para generar automáticamente getters y setters en un campo.Cómo crear anotaciones personalizadas como BeanProperty

¿Cómo puedo crear mi propia anotación que se comporte así?

Estoy interesado en crear anotaciones que cambien el código fuente, como lo hace @BeanProperty.

Como ejemplo, ¿cómo podría crear una anotación que solo generase los métodos get?

Gracias.

Respuesta

9

Dos palabras: compiler plugin. No es fácil, y la documentación es escasa, pero esa es una forma de hacerlo.

Las versiones futuras de Scala probablemente tendrán macro support, lo que le brinda la misma capacidad de flexión.

+0

Pensé que la anotación era algo más fácil de integrar, pero no había una fuente en la clase BeanProperty. Esperaré por el soporte macro, que probablemente se comportará de manera más fluida que los complementos del compilador (que no puedo usar debido a algunas restricciones). Muchas gracias. –

+0

@ViniciusSeufitele - sí, 'BeanProperty' es solo una anotación; es el compilador el que hace el trabajo de generar los métodos adicionales. – leedm777

+2

Ahora tenemos macros, ¿podemos tener una respuesta actualizada? :)) – Edmondo1984

Cuestiones relacionadas