I seem to ask questions about these three things fairly regularly, so
please bear with me if you find it repetitive.
With earlier versions of assistedinject, I could use
FactoryProvider.newFactory like this:
mapbinder.addBinding("orange").
toProvider(FactoryProvider.newFactory(FruitFactory.class,
Orange.class));
mapbinder.addBinding("banana").
toProvider(FactoryProvider.newFactory(FruitFactory.class,
Banana.class));
@Inject Map<String, FruitFactory> map;
map.get(fruitname).bear(3);
See discussion of this "command" pattern with mapbinder and
assistedinject here: http://tinyurl.com/22t28y6
With FactoryModuleBuilder, I'm not sure how to obtain the Provider
object to put into the mapbinder.
Below are some half-baked ideas I've pursued; if you already know what
I mean by reading the above, this part probably will just be
confusing.
I did see that I can create annotated providers, in answer to a
question I asked about FactoryModuleBuilder: http://tinyurl.com/2baormz
But it's not clear to me that this gives me the indirection I need to
bear dynamic fruit.
I also see you can use TypeLiteral with FactoryModuleBuilder. So
perhaps I could simply drop the mapbinder altogether and change Fruit
to be Fruit<T> and let Guice's type mechanism satisfy the type
injection of FruitFactory<Orange>, but I still lack the indirection
necessary to obtain a FruitFactory where the fruit class is known only
at runtime.
Thank you,
Leigh.
--
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.