Jigar,
AssistedInject allows you to have a single factory interface for
creating all of your instances, even if they have different
dependencies in the constructor arguments. As long as the other
arguments can be supplied through Injection, it doesn't matter how
many there are; there just needs to be a match between the arguments
of the create(...) method of your factory interface and the Assisted
arguments of each types constructor.
Given this, all you need is some way to call up the factory for an
instance you need and you can get that instance without reflection.
The grouping of all of your implementations could be done with a
MapBinder (
http://code.google.com/p/google-guice/wiki/Multibindings).
All you need to do is choose a key to select your implementation
(which you probably have already).
-Dave
-Dave
http://code.google.com/p/google-guice/wiki/Multibindings