0

内部にクラスを持つライブラリを使用しています

@ImplementedBy(MyClassImpl.class)
public interface MyClassInterface {
....
}

Guice の場合、MyClassImpl のインスタンスを取得するにはどうすればよいですか?

バインディングを作成する必要がありますか:

bind(MyClassInterface.class).to(MyClassImpl.class);

使うには?

どうもありがとう

4

2 に答える 2

2

いいえ、可能ですが、バインディングを作成する必要はありません。これを行うと、@ImplementedBy注釈が上書きされます。

通常のインジェクションを介してインスタンスを取得できます。

@Inject
public Client(MyClassInterface foo) {
  ...
}

または (最上位クラスの場合):

injector.getInstance(MyClassInterface.class);
于 2012-06-01T15:00:36.133 に答える
0

インターフェイスを注入するか、次のいずれかを行います。

@Inject
MyClassInterface myClass;

または、インジェクターを使用してインスタンスを取得できます。

MyClassInterface myClass = injector.getInstance(MyClassInterface.class);

どちらも MyClassImpl タイプで注入されます。

于 2012-06-01T15:01:31.190 に答える