https://github.com/google/guice/wiki/AssistedInjectを読みましたが、AssistedInject引数の値を渡す方法が記載されていません。インジェクター.getInstance()の呼び出しはどのようになりますか?
https://github.com/google/guice/wiki/AssistedInjectを読みましたが、AssistedInject引数の値を渡す方法が記載されていません。インジェクター.getInstance()の呼び出しはどのようになりますか?
回答:
FactoryModuleBuilderクラスのjavadocを確認してください。
AssistedInjectFactory自分でコーディングする代わりに、クラスを動的に構成できます。これは、注入する必要のある依存関係と、オブジェクトの作成時に指定する必要のあるいくつかのパラメーターを持つオブジェクトがある場合に役立つことがよくあります。
ドキュメントの例は次のとおりです。 RealPayment
public class RealPayment implements Payment {
   @Inject
   public RealPayment(
      CreditService creditService,
      AuthService authService,
      @Assisted Date startDate,
      @Assisted Money amount) {
     ...
   }
 }
それを参照してCreditService、AuthServiceコンテナによって注入する必要がありますが、startDateとamountは、インスタンスの作成中に開発者が指定する必要があります。
したがって、を注入する代わりに、Payment次のPaymentFactoryよう@Assistedにマークされたパラメータを使用してを注入します。RealPayment
public interface PaymentFactory {
    Payment create(Date startDate, Money amount);
}
そして、工場は拘束されるべきです
install(new FactoryModuleBuilder()
     .implement(Payment.class, RealPayment.class)
     .build(PaymentFactory.class));
構成済みのファクトリをクラスに注入できます。
@Inject
PaymentFactory paymentFactory;
コードで使用されます
Payment payment = paymentFactory.create(today, price);
RealPaymentために、インターフェースを実装する必要はありません。