内部にクラスを持つライブラリを使用しています
@ImplementedBy(MyClassImpl.class)
public interface MyClassInterface {
....
}
Guice の場合、MyClassImpl のインスタンスを取得するにはどうすればよいですか?
バインディングを作成する必要がありますか:
bind(MyClassInterface.class).to(MyClassImpl.class);
使うには?
どうもありがとう
いいえ、可能ですが、バインディングを作成する必要はありません。これを行うと、@ImplementedBy
注釈が上書きされます。
通常のインジェクションを介してインスタンスを取得できます。
@Inject
public Client(MyClassInterface foo) {
...
}
または (最上位クラスの場合):
injector.getInstance(MyClassInterface.class);
インターフェイスを注入するか、次のいずれかを行います。
@Inject
MyClassInterface myClass;
または、インジェクターを使用してインスタンスを取得できます。
MyClassInterface myClass = injector.getInstance(MyClassInterface.class);
どちらも MyClassImpl タイプで注入されます。