コンストラクターにクラスを動的に挿入するためにguiceを使用しています。例えば:
@Inject
public PublisherFrame(EventBus eventBus, MyPublisherService publishService)
そして私のguiceモジュールでは:
bind(EventBus.class).in(Singleton.class);
bind(MyPublisherService.class).in(Singleton.class);
問題なく動作します。
問題は、Javaコードで構築されたパラメーターを持つオブジェクトを作成したときに始まります。
public LoginController(EventBus eventBus, MyPublisherService publisherService, LoginDialog dlg)
ここで、LoginDialogは、Javaコードが作成するJavaクラスです。これを解決するには、@assistと次を使用します。
install(new FactoryModuleBuilder().implement(ILoginController.class, LoginController.class).build(GuiceLoginControllerFactory.class));
うまく機能します。しかし今、私は2つの追加のJavaファイルを作成する必要があります:
- LoginControllerの新しいインターフェイス:ILoginController。これはヘルプガイド以外は何もしません。
- guiceの別のインターフェース:GuiceLoginControllerFactory
コンストラクターにカスタムパラメーターを持つ変数を挿入する簡単な方法はありますか?(2つの追加の「guice」ヘルパーファイルを作成せずに)