У меня есть два интерфейса A и B, и B расширяет A.
У меня есть один поставщик, который может предоставить экземпляры, класс которых реализует B (и, следовательно, A).
Я хотел бы привязать Provider к B.class (просто) и к A.class с аннотацией в одноэлементной области видимости.
bind(B.class).toProvider(MyBImplProvider.class).in(Scopes.SINGLETON);
bind(A.class).annotatedWith(Names.named("B")).toProvider(MyBImplProvider.class).in(Scopes.SINGLETON);
Как вернуть тот же экземпляр у провайдера, независимо от того, введу ли я через B.class или через A.class + Annotation. Например, я хотел бы иметь возможность определять конструкторы как
@Inject
C(B param)
или
@Inject
C(@Named("B") param)
В обоих случаях мне бы хотелось, чтобы param оценивался с одним и тем же синглтоном.