Вы можете создавать методы провайдера, не используя TypeLiteral<A<Integer>>
в определении.
class MyModule extends AbstractModule {
@Provides
@Singleton
A<Integer> provideAOfInteger() {
return new B();
}
}
И вы также можете использовать неявную привязку для доступа к A<Integer>
:
class AOfIntegerHolder {
@Inject A<Integer> aOfInteger;
}
Injector injector = Guice.createInjector(new MyModule());
A<Integer> a1 = injector.getInstance(AOfIntegerHolder.class).aOfInteger;
Прелесть Guice в том, что есть несколько способов сделать то, что вы хотите, и ни один не лучше другого: они просто разные;)