This is possible but Guice by default cannot do that, unless the integer is named, as Fred described.
You could possibly do one of the following: - Using a builder to create the instance for you (there are some examples on the list that I cannot seem to locate now) - You could consider using the AssistedInject extension (http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/assistedinject/FactoryProvider.html) - Gary On Fri, Jan 15, 2010 at 10:42 AM, motes <[email protected]> wrote: > My plan was to let the user specify the int at runtime and then pass > it to the module like: > > > public class Test { > > public static void main(String[] args) { > // Get userinput. Path to xml frame. > int userInt = Integer.parseInt(args[0]); > Injector injector = Guice.createInjector(new MyCarModule > (userInt)); > CarShop carShop = injector.getInstance(CarShop.class); > } > } > > Then in the module I can do: > > public class MyCarModule extends AbstractModule { > private int tt; > public MyCarModule(int tt) { > this.tt = tt; > } > > �...@override > protected void configure() { > > bind(Automobile.class).to(Ford.class); > bind(String.class).annotatedWith(Names.named > ("LicenseKey")).toInstance(tt); > > > > But is it this how guice is intented to be used (passing external > resources to the module constructor)? > > > On Jan 14, 11:37 pm, Fred Faber <[email protected]> wrote: >> Where is the value of the int coming from? >> >> If it's known at configure() time, then simply bind it: >> >> bind(int.class).toInstance(60); >> >> most likely you'll need to annotate it: >> >> class Ford implements Automobile { >> >> @Retention(RetentionPolicy.RUNTIME) >> @Target(ElementType.PARAMETER) >> @BindingAnnotation >> @interface ForFord { } >> >> �...@inject >> Ford(@ForFor int maxSpeed) { >> ... >> } >> } >> >> at which point you can use the type converters in guice to do: >> >> bindConstant().annotatedWith(ForFord.class).to(65); >> >> -Fred >> >> On Thu, Jan 14, 2010 at 4:56 PM, motes <[email protected]> wrote: >> > I have this simple class: >> >> > public class Ford implements Automobile { >> > private int maxSpeed; >> >> > public Ford(int speed) { >> > System.out.println("Driving a Ford!"); >> > this.maxSpeed = speed; >> > } >> >> > �...@override >> > public int getMaxSpeed() { >> > return maxSpeed; >> > } >> >> > public void printBrand(){ >> > System.out.println("Ford"); >> >> > } >> > } >> >> > I would like to inject this implementation into the CarShop below: >> >> > public class CarShop { >> > private Automobile car; >> > �...@inject >> > public CarShop(Automobile car) { >> > this.car = car; >> > } >> >> > public void printBrand(){ >> > car.printBrand(); >> > } >> >> > public void printMaxSpeed(){ >> > car.getMaxSpeed(); >> > } >> > } >> >> > In my Module I do: >> >> > public class MyCarModule extends AbstractModule { >> > �...@override >> > protected void configure() { >> > bind(Automobile.class).to(Ford.class); >> > } >> > } >> >> > But how do I get the int passed to the constructor in my Ford >> > implementation? >> >> > I have looked at: >> >> >http://code.google.com/docreader/#p=google-guice&s=google-guice&t=Fre... >> >> > but it seems pretty overkill to create a factory or an AssistedInject >> > to pass an int to a constructor. >> >> > Any ideas? >> >> > -- >> > 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]<google-guice%[email protected]> >> > . >> > For more options, visit this group at >> >http://groups.google.com/group/google-guice?hl=en. > > -- > 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. > > > >
-- 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.
