Guiceを使用して、
@Inject @Named("light")
Color light;
使うことができます
bind(Color.class).annotatedWith(Names.named("light"))
.toInstance(new Color("white"));
Colorコンストラクターが色名のみを必要とする場合にそれを白色にバインドします。
しかし、ColorコンストラクターがGuiceによって作成されたオブジェクトも必要とする場合、どうすればよいですか?例えば:
@Inject
public Color(ColorSet colorset, String colorName) {...}
ここで、colorsetは実行時にGuiceによって作成され、configure(){...}では使用できません。
私はそれなしでやりたいです:
- 注入する必要のある色ごとにクラス/サブクラスを作成する(WhiteColorなど)
- コードで直接リフレクションを使用する
ColorFactoy factory; factory.get("light");
代わりに使用するようにクラスを変更する@Named("light") Color light;