0

オブジェクトを挿入し、その初期化子メソッドにパラメーターを渡すことができるようにしたいと思います。これは可能ですか?

public class MyObject
{
  @Inject
  public MyObject(int anInteger)
  {
    //do something
  }
}


public class MyActivity extends RoboActivity
{
   @Inject (anInteger = 5) MyObject myObject;
   // I want to be able to pass an object to be used when calling the 
   // initializer method
}
4

2 に答える 2

1

bindConstant()それに応じて注釈を付けてそれを行うことができるはずです。たとえば、構成パラメーターを挿入するにはどうすればよいですか? を参照してください。

于 2011-03-30T01:53:11.437 に答える
0
public class MyModule extends AbstractModule
{
  @Override
  protected void configure()
  {
    bind(Integer.class).
        annotatedWith(Names.named("my.object.an.integer")).
        toInstance(500);
  }

  @Provides
  @Named("an.integer.5")
  public MyObject myObject5()
  {
    return createMyObject(5);
  }

  @Provides
  @Named("an.integer.100")
  public MyObject providesMyObject100()
  {
    return createMyObject(100);
  }

  private MyObject createMyObject(int anInteger)
  {
    MyObject result = new MyObject(anInteger);
    // if there are any other fields/setters annotated with @Inject
    requestInjection(result);
    return result;
  }
}


public class MyObject
{
  public MyObject(int anInteger)
  {
    System.out.println("anInteger = " + anInteger);
  }
}

public class User
{
  @Inject
  @Named("an.integer.5")
  private field MyObject five;

  @Inject
  @Named("an.integer.100")
  private field MyObject hundred;
}
于 2011-03-30T06:28:08.733 に答える