The Guava developers chose to use annotations:
class EventBusChangeRecorder {
@Subscribe
void recordCustomerChange(ChangeEvent e) {
recordChange(e.getChange());
}
}
... instead of classic interfaces:
class EventBusChangeRecorder implements Handler<ChangeEvent>{
void handle(ChangeEvent e) {
recordChange(e.getChange());
}
}
This makes compile time checking impossible. So I'm wondering what is the advantage of this approach.
Do you see any advantages of annotations here?
I think that the question is answered on the Guava wiki.