我有一个界面
public interface IInterface{}
我有这个接口的实现列表:
public class MyClass1 implements IInterface{}
public class MyClass2 implements IInterface{}
我想用 Pico Container 做什么:
注册IInterface的所有实现,以便能够将它们解析为列表:
public class MyTest { public MyTest(IInterface[] list){} }
另一种选择是能够使用命名键注册实现:
container.addComponent(IInterface.class, MyClass1.class, "name1"); container.addComponent(IInterface.class, MyClass2.class, "name2");
能够执行以下操作:
container.getComponent(IInterface.class, "name2");
是否有至少第一个问题的内置解决方案?
UPD
- 在 Pico 中发现这个实现非常奇怪且不直观。
为了能够注入一个数组,它是必要的:
container.addComponent(MyClass1.class);
container.addComponent(MyClass2.class);
container.addComponent(MyTest.class);
MyTest test = container.getComponent(MyTest.class);
这将注入所有实现的数组。但这种行为非常不清楚,也不直观。至于我,最好注册对。