Variable mit benutzerdefiniertem Parameter injizieren, ohne 2 Guice-Helfer-Interfaces zu erstellen?
Ich benutze Guice, um Klassen in meinen Konstruktoren dynamisch einzufügen. Zum Beispiel:
@Inject
public PublisherFrame(EventBus eventBus, MyPublisherService publishService)
Und in meinem Guice-Modul:
bind(EventBus.class).in(Singleton.class);
bind(MyPublisherService.class).in(Singleton.class);
Funktioniert ohne Probleme.
Das Problem beginnt, wenn ich ein Objekt erstelle, das einen Parameter hat, der in Java-Code erstellt wird:
public LoginController(EventBus eventBus, MyPublisherService publisherService, LoginDialog dlg)
Hier ist LoginDialog eine Java-Klasse, die von Java-Codes erstellt wird. Um dies zu lösen, benutze ich @assist und:
install(new FactoryModuleBuilder().implement(ILoginController.class, LoginController.class).build(GuiceLoginControllerFactory.class));
Funktioniert auch gut. Aber jetzt muss ich 2 zusätzliche Java-Dateien erstellen:
eine neue Schnittstelle für LoginController: ILoginController, die nichts anderes tut als Hilfe.eine andere Schnittstelle für Guice: GuiceLoginControllerFactoryGibt es eine einfachere Möglichkeit, eine Variable mit einem benutzerdefinierten Parameter in den Konstruktor einzufügen? (ohne 2 zusätzliche "guice" -Hilfedateien zu erstellen)