【发布时间】:2012-09-05 21:37:39
【问题描述】:
使用 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) {...}
其中颜色集由 Guice 在运行时创建,而在 configure(){...} 中不可用。
我想不这样做:
- 为我需要注入的每种颜色创建一个类/子类(如 WhiteColor)
- 直接在我的代码中使用反射
- 将我的课程更改为使用
ColorFactoy factory; factory.get("light");而不是@Named("light") Color light;
【问题讨论】:
标签: java dependency-injection guice