My expectation would be no (though on preview it looks like Willi might
disagree, so a test seems in order!).  I think what you actually want is:

bind(FooCompmentImpl.class).annotatedWith(Names.named("1")).in(Scopes.SINGLETON);
bind(FooCompmentImpl.class).annotatedWith(Names.named("2")).in(Scopes.SINGLETON);
bind(FooCompmentImpl.class).annotatedWith(Names.named("3")).in(Scopes.SINGLETON);
bind(FooComponent.class).annotatedWith(Names.named("1").to(Key.get(FooComponentImpl.class,
Names.named("1"));
bind(FooComponent.class).annotatedWith(Names.named("2").to(Key.get(FooComponentImpl.class,
Names.named("2"));
bind(FooComponent.class).annotatedWith(Names.named("3").to(Key.get(FooComponentImpl.class,
Names.named("3"));

Otherwise you'll have an unannotated, unscoped binding of FooComponent to
FooComponentImpl, along with three singleton-scoped bindings with different
annotations for FooComponentImpl.  Attempting to inject an annotated
FooComponent into your ModelImpl in that case will fail.

Cheers,
Chris


On Fri, Mar 26, 2010 at 6:11 PM, Russ <[email protected]> wrote:

> Thanks for the quick response Chris.
>
> What if ViewImpl needed multiple references to different
> FooComponentImpl objects?  Do I annotate them to differentiate them?
>
> class ViewImpl extends ThirdPartyContainer
>    implements View {
>
>     @Inject @Named("1") private FooComponentImpl _comp1;
>    @Inject @Named("2") private FooComponentImpl _comp2;
>    @Inject @Named("3") private FooComponentImpl _comp3;
>
>    void init() {
>        // add() is a ThirdPartyFooComponent API method written
>        // in terms of ThirdPartyFooComponent
>         add(_comp1);
>        add(_comp2);
>        add(_comp3);
>     }
>
> }
>
> bind(FooComponent.class).to(FooComponentImpl.class);
>
> bind(FooCompmentImpl.class).annotatedWith(Names.named("1")).in(Scopes.SINGLETON);
>
> bind(FooCompmentImpl.class).annotatedWith(Names.named("2")).in(Scopes.SINGLETON);
>
> bind(FooCompmentImpl.class).annotatedWith(Names.named("3")).in(Scopes.SINGLETON);
>
> Will ModelImpl get the right references?
>
> class ModelImpl implements Model {
>
>    @Inject @Named("1") private FooComponent _comp1;
>    @Inject @Named("2") private FooComponent _comp2;
>    @Inject @Named("3") private FooComponent _comp3;
>
> }
>
> --
> You received this message because you are subscribed to the Google Groups
> "google-guice" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-guice%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-guice?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to