Binding mit Google Guice

Die Projektseite von Google Guice und ihr Wiki empfinde ich als selten hilfreich. Besser macht sich da das zugehörige Javadoc, dass meine Fragen meist direkter zu beantworten wusste.

Beispiel Binding-Möglichkeiten

Implementierung an Interface binden

Üblicherweise bindet man ein Interface an seine Implementierung:

bind(Map.class).to(ArrayMap.class);

Implementierung an sich selbst

Was aber tun, wenn man gar kein Interface hat? Blauäugig dachte ich, dass das doch genauso gehen müsste:

// Fehlerhafter Beispielcode
bind(MyClass.class).to(MyClass.class);

Aber dem ist nicht so. Stattdessen bricht Guice den Startvorgang ohne verwertbare Fehlermeldung ab. Die Lösung ist stattdessen viel einfacher:

bind(MyClass.class);

Typ an Provider binden

Ein weitere interessante Möglichkeit ist die Bindung eines Typs an einen Provider, welcher Instanzen des Typs bei Nachfrage erzeugt und zurückgibt.

bind(MyClass.class).toProvider(MyClassProvider.class);

Generics und mehr

Solche und weitere Möglichkeiten, wie das leider etwas unschöne Binden generischer Klassen, lässt sich in den Javadocs nachlesen. Diese sind auch online verfügbar.