2012-04-07 2 views
7

В Scala можно использовать аннотацию @BeanProperty для автоматического создания геттеров и сеттеров в поле.Как создать пользовательские аннотации, такие как BeanProperty

Как я могу создать свою собственную аннотацию, которая ведет себя так?

Я заинтересован в создании аннотаций, которые меняют исходный код, например @BeanProperty.

В качестве примера, как я могу создать аннотацию, которая генерирует только методы get?

Спасибо.

ответ

9

Два слова: compiler plugin. Это непросто, и документация разрежена, но это один из способов сделать это.

Будущие версии Scala, вероятно, будут иметь macro support, что дает вам такую ​​же гибкость.

+0

Я думал, что аннотация была чем-то более легким для интеграции, но не было источника в классе BeanProperty. Я буду ждать поддержки макросов, которые, скорее всего, будут вести себя более плавно, чем плагины компилятора (которые я не могу использовать из-за некоторых ограничений). Большое спасибо. –

+0

@ViniciusSeufitele - да, 'BeanProperty' - всего лишь аннотация; это компилятор, который выполняет работу по созданию дополнительных методов. – leedm777

+2

Теперь у нас есть макросы, может у нас есть обновленный ответ? :)) – Edmondo1984

Смежные вопросы