class Foo {
@Inject
public Foo(@Assisted final int num1, final Bar bar) { } interface FooFactory {
Foo create(final int num1);
}
}class Bar {
@Inject
public Bar(@Assisted final int num2) {
System.out.println("Bar got "+num2);
}
}class BillingModule extends AbstractModule {
@Override
protected void configure() {
install(new FactoryModuleBuilder()
.implement(Foo.class, Foo.class)
.build(Foo.FooFactory.class));
}
}public class App
{
public static void main( String[] args ) {
Injector injector = Guice.createInjector(new BillingModule());
Foo.FooFactory fooFactory = injector.getInstance(Foo.FooFactory.class);
fooFactory.create(1234);
}
}