Как принудительно внедрить конкретный экземпляр без доступа к коду класса impl? - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь связать класс C из стороннего пакета.Он внедряет экземпляр класса Foo через конструктор -

class C {
    public C(@Inject Foo foo) {
        ...
    }
    ...
}

В моем приложении у меня есть два экземпляра привязанного Foo -

bind(Foo.class)
    .to(FooImpl1.class);

bind(Foo.class)
    .annotatedWith(Names.named("SpecialFoo"))
    .to(FooImpl2.class);

, когда связан C, я хочу именованный Fooэкземпляр для использования.Однако у меня нет доступа к коду, в котором определен язык C, чтобы иметь возможность помещать какие-либо аннотации.

Есть ли предлагаемый способ сделать это, кроме написания моего собственного метода провайдера для C?

1 Ответ

0 голосов
/ 06 октября 2018

Вы можете использовать PrivateModule .В вашем примере это будет что-то вроде:

public class CModule extends PrivateModule {
    protected void configure() {
        bind(Foo.class).to(FooImpl2.class);
        bind(C.class);
        expose(C.class);
    }
}
...