Guice:使用@Named创建对象
2022-09-03 03:59:23
使用 Guice,如果我有
@Inject @Named("light")
Color light;
我可以使用
bind(Color.class).annotatedWith(Names.named("light"))
.toInstance(new Color("white"));
以将其绑定到白色(如果颜色构造函数只需要颜色名称)。
但是,如果Color构造函数还需要由Guice创建的对象,我该怎么办呢?例如:
@Inject
public Color(ColorSet colorset, String colorName) {...}
其中颜色集由 Guice 在运行时创建,在 configure(){...} 中不可用。
我想在没有:
- 为我需要注入的每种颜色创建一个类/子类(如WhiteColor)
- 在我的代码中直接使用反射
- 更改我的类以使用而不是
ColorFactoy factory; factory.get("light");
@Named("light") Color light;