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? Mairbek Khadikov I think that the question is answered on the Guava wiki . 来源: https://stackoverflow.com/questions/8985875