使用 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;