1

Guiceでのバインディングについて質問があります。

2つのクラス(MyClass1とMyClass2)が両方とも同じインターフェイスを実装しています。たとえば、IMyIntefaceです。

バインディングを次のように構成しました。

bind(IMyInterface.class).annotatedWith(Class1.class).to(MyClass1.class); bind(IMyInterface.class).annotatedWith(Class2.class).to(MyClass2.class);

Class1とClass2は、定義された注釈です。

ここで、クライアントでこのコードを使用すると、次のようになります。

    Injector injector = Guice.createInjector(new MyModule());
    IMyInterface c = injector..getInstance(IMyInterface.class);

Guiceは、IMyInterfaceにどの実装を使用したいかわかりません。とにかく、この段階で注釈を指定して、選択的に次のように言うことができますか?MyClass2の実装が必要ですか?

どうもありがとう

4

1 に答える 1

2

私はあなたができると思います:

injector.getInstance(Key.get(IMyInterface.class, Class2.class));

編集: here と同様の回答を持つ同様の質問があるようです。

于 2012-04-13T09:51:53.480 に答える