2012-04-13 19 views
1

Guiceのバインディングについて質問があります。Guiceは2つの異なるクラスを同じインターフェースにバインドしています。

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

私は、バインディングとして設定されてしまっています

バインド(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の実装を望んでいますか?私はあなたが行うことができると思い

感謝

答えて

2

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

編集: 同様の答えhereと同様の問題があるように見えます。

+0

多くのありがとうございます。できます :) – Kevin

関連する問題