On Thu, Jul 9, 2009 at 6:32 PM, Ben <[email protected]> wrote: > I guess a common advice is to stay away from .toInstance(). > > But assuming you have to do that (maybe it's a test), I would do it this > way to avoid messing with reflection directly: > abstract class ListModule<T> extends AbstractModule { > > protected ListModule(List<T> list) { > this.list = list; > } > > @Provides List<T> provideList() { > return list; > } > } > > new ListModule<String>(new ArrayList<String>()) {}; > > FeedBurner has a convenience class that can be used as: > > new BindingModule<List<String>>(Lists.newArrayList()) {}; >
Oops. I thought this is another list. Please ignore this part, it's irrelevant. > > > On Thu, Jul 9, 2009 at 4:39 PM, Dmitry Skavish <[email protected]> wrote: > >> Hi, >> I can't figure out how to bind class parametrized with a given Class? >> >> For example if I have something like this: >> >> Module createModule(Class clazz, List list) { >> return new AbstractModule() { >> protected void configure() { >> bind(??????).toInstance(list); >> } >> }; >> } >> >> then after this call: createModule(String.class, new ArrayList()) >> >> I have binding from List<String> to my list >> >> This binding should be equivalent to this one: bind(new >> TypeLiteral<List<String>>() {}).toInstance(list); >> >> I tried to the following, but compiler does not like it and I am not >> really sure this is the right way: >> >> bind(Key.get(Types.newParameterizedType(List.class, >> clazz))).toInstance(list); >> >> Thanks! >> -- >> Dmitry Skavish >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
