说我有2节课。
class A { ... }
class B {
public B(A a) {...}
}
我想创建一个获取名称并需要为带注释的B创建绑定的模块:
class MyModule extends AbstractModule {
String name;
public MyModule(String name) { this.name = name; }
public void configure() {
// CREATE BINDING for @Named(name)B which depends on @Named(name)A
}
}
为B(或为其提供程序)创建绑定的最佳方法是什么(取决于正确的A)?
谢谢
亚龙
最佳答案
这个怎么样:
bind(B.class).annotatedWith(Names.named("name")).toProvider( new Provider<B>() {
private A namedA;
@Inject
public void setNamedA(@Named("name") A namedA ) {
this.namedA = namedA;
}
@Override
public B get() {
return new B( namedA );
}
} );
尽管我还没有测试过,但它应该根据文档工作。
关于java - 在Guice中从一个提供者“继承”注释到另一个提供者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14039087/