While that does work, i found that my problem is on the next level.
So to re-iterate, the problem is below:
package guicetest;
import com.google.inject.*;
import com.google.inject.name.Named;
import com.google.inject.name.Names;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
/**
* {@code GuiceTest}
*/
public class GuiceTest {
public static void main(String[] args) {
final Injector injector = Guice.createInjector(new AbstractModule()
{
@Override
protected void configure() {
bind(Integer.class).annotatedWith(Names.named("handlerParam")).toInstance(10);
bind(Coordinator.class);
bind(Handler.class).to(HandlerImpl.class);
}
@Provides
Handler[] handlers() {
final Handler[] handlers = new Handler[10];
for (int i = 0; i < handlers.length; i++) {
// how should I instantiate handlers here?
handlers[i] = getProvider(Handler.class).get(); // this
throws NPE because it this stage binder is set to null
}
return handlers;
}
});
final Coordinator instance =
injector.getInstance(Coordinator.class);
System.out.println(instance);
}
}
interface Handler {
}
class HandlerImpl implements Handler {
static AtomicInteger instanceCounter = new AtomicInteger();
private int handlerParam;
@Inject
HandlerImpl(@Named("handlerParam") int handlerParam) {
this.handlerParam = handlerParam;
instanceCounter.incrementAndGet();
}
@Override
public String toString() {
return "HandlerImpl{" + "handlerParam=" + handlerParam + '}';
}
}
class Coordinator {
private Handler[] handlers;
@Inject
Coordinator(Handler[] handlers) {
this.handlers = handlers;
}
@Override
public String toString() {
return "Coordinator{" + "handlers=" + Arrays.toString(handlers) +
'}';
}
}
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.