Google Guice + Generics + Vererbung

freez

Top Contributor
Hallo,

ich nutze Guice 3 und habe folgendes Problem:

Abstrakte Klasse
Java:
public abstract class DataHandler<C extends Configuration> {
	@Inject protected C			configuration;
	@Inject protected Configuration			conf2;
Die Subklasse hat als generische Definition 'StandardConfiguration'.

Moduldefinition:
Java:
bind(Configuration.class).to(StandardConfiguration.class).in(Singleton.class);

Das Problem ist nun, dass 'configuration' eine andere Instanz ist als 'conf2' auch wenn ich mal ein
Java:
Configuration conf = injector.getInstance(Configuration.class);
mache, erhalte ich dieselbe Instanz, wie conf2. Die Implementierung (StandardConfiguration.class) ist bei allen Instanzen richtig. Nur die Singletondefinition in Verbindung mit Generics funktioniert nicht. Wie bringe ich Guice bei dies richtig zu machen?
 
So wie ich das sehe, müsstest Du noch binds für Deine ganzen Subklassen von
Code:
Configuration
machen. Damit Guice eine Instanz des richtigen Typs erzeugen kann.
 
Das mit dem bind müsste schon so passen.

Hast du vllt zwei unterschiedliche Injector Instanzen?
 
So wie ich das sehe, müsstest Du noch binds für Deine ganzen Subklassen von
Code:
Configuration
machen. Damit Guice eine Instanz des richtigen Typs erzeugen kann.

Habe ich das nicht damit:
Java:
bind(Configuration.class).to(StandardConfiguration.class).in(Singleton.class);
gemacht?
 
Ich habe das Problem gelöst. Das Binding im Module muss so aussehen, dann klappts auch mit Generics:
Java:
bind(Configuration.class).to(StandardConfiguration.class);
bind(StandardConfiguration.class).in(Singleton.class);
 

Zurück
Oben