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.