mainメソッドを持たないクラスがあります。このクラスは、私の制御できないコードでも使用されます。このクラスには、文字列をパラメータとして受け取るメソッドがあり、その文字列の値に基づいて、さまざまなオブジェクトを作成する必要があります。Guiceを使用してこれらのオブジェクトを作成するにはどうすればよいですか?答えはプロバイダーと関係があると思いますが、それをどのように実装するかはわかりません。
これが問題のクラスで、DIを使用してオブジェクトを作成していません。
public class ActionHandler {
public void doSomething(String message) throws Exception {
ActionObject actionObj = null;
if (message.equals("dog")) {
// ActionObjectDog implements ActionObject
actionObj = new ActionObjectDog();
}
else if (message.equals("cat")) {
// ActionObjectCat implements ActionObject
actionObj = new ActionObjectCat();
}
else {
throw new Exception("Action " + message + " not implemented.");
}
actionObj.run();
}
}
プロバイダーを注入しようとしましたが、プロバイダーのget()メソッドがActionObjectの特定の実装を返すようにする方法がわからなかったため、行き詰まりました。
@Inject private Provider<ActionObject> actionObjectProvider;
何かご意見は?