Hi,

I'm new to Guice, so I apologise if this is a stupid question, or if
my I'm just plain wrong.  I'm trying to retrofit it to a large
existing codebase.

My understanding is that if I have a Guice binding like:

bind(MyInterface.class).to(MyClass.class)

where MyClass implements MyInterface and has a constructor like:

@Inject
public myClass(AnotherClass somethingElse)
{
 //..blah
}

then when Guice supplies an instance of MyClass, that instance will
have been injected with, in turn, an AnotherClass instance, providing
that is also bound (hopefully I'm right so far?)

So now imagine that MyClass does NOT implement MyInterface (classes in
my codebase only implement interfaces where there are multiple
implementations of that interface)  .

Guice does not permit me to do this:

bind(MyClass.class).to.(MyClass.class)

And this is not the same thing:

bind(MyClass.class).toInstance(new MyClass())

because that instance will not have been supplied with an
AnotherClass.

I could have some sort of bootstrap where I:

bind(AnotherClass.class).toInstance(new AnotherClass());

and then

Injector injector = Guice.createInjector(getBootstrapModule());
bind(MyClass.class).toInstance(injector.getInstance(MyClass.class));

but then I'm stumped if I want to then inject both MyClass and
AnotherClass into something, unless I can live with multiple instances
of AnotherClass.

I do not want to write interfaces for these classes just so I can
inject them; have I got something wrong here, or is there a way around
this?

Many thanks if you are able to help

Jon

--~--~---------~--~----~------------~-------~--~----~
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