2012-04-07 15 views
7

w Scala to możliwe użycie @BeanProperty adnotacji do automatycznego generowania pobierające i ustawiające na polu.Jak tworzyć własne adnotacje jak BeanProperty

Jak mogę stworzyć własną notatkę, która zachowuje się w taki sposób?

Jestem zainteresowany tworzenia adnotacji, że zmiany kodu źródłowego, jak @BeanProperty robi.

Jako przykład, w jaki sposób można utworzyć adnotację, że tylko wygenerowane dostać metod?

Dzięki.

Odpowiedz

9

Dwa słowa: compiler plugin. Nie jest to łatwe, a dokumentacja jest skąpa, ale jest to jeden ze sposobów na zrobienie tego.

Przyszłe wersje Scala będzie prawdopodobnie mieć macro support, który daje dużo tego samego flexability.

+0

Uważam, że adnotacja była łatwiejsza do zintegrowania, ale nie było źródła na klasie BeanProperty. Zaczekam na obsługę makr, która prawdopodobnie będzie zachowywać się bardziej płynnie niż wtyczki kompilatora (których nie mogę użyć z powodu pewnych ograniczeń). Wielkie dzięki. –

+0

@ViniciusSeufitele - tak, 'BeanProperty' to tylko adnotacja; to kompilator wykonuje pracę generowania dodatkowych metod. – leedm777

+2

Teraz mamy makra, czy możemy mieć zaktualizowaną odpowiedź? :)) – Edmondo1984