javainterfaceannotationsguavaevent-bus

Annotations vs. Interface in Guava EventBus


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?


Solution

  • I think that the question is answered on the Guava wiki.