【发布时间】:2013-05-17 18:52:40
【问题描述】:
如果我有一个接口 IBaseFunction 和这个接口的多个实现。 如何遍历绑定调用每个即方法的绑定
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind( IBaseFunction.class).annotatedWith( ExDelete.class).to( ExDeleteFunction.class);
bind( IBaseFunction.class).annotatedWith( ExAdd.class).to( ExAddFunction.class);
...
}
}
我需要在每个绑定上调用一个函数 'publish()(使处理程序在总线上可用)
我可以像这样单独调用每个绑定上的函数:-
ExDeleteFunction functionExDelete = injector.getInstance( ExDeleteFunction.class);
ExDeleteFunction.publish();
ExAddFunction functionExAdd = injector.getInstance( ExAddFunction.class);
ExAddFunction.publish();
但是我想做的是遍历这些并在所有这些上调用“发布”函数,有没有办法做到这一点? 也许使用 injector.getAllBindings() ?像这样的东西:-
Injector injector = Guice.createInjector( new ServicesModule() );
Map<Key<?>, Binding<?>> bindings = injector.getAllBindings();
for (Binding<?> binding : bindings.values()) {
Key<?> key = binding.getKey();
...??
或者有没有更简单的方法?
【问题讨论】: