说我有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/

10-11 04:09