Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse RCP-注入带有@Singleton标记的接口_Java_Dependency Injection_Eclipse Rcp - Fatal编程技术网

Java Eclipse RCP-注入带有@Singleton标记的接口

Java Eclipse RCP-注入带有@Singleton标记的接口,java,dependency-injection,eclipse-rcp,Java,Dependency Injection,Eclipse Rcp,我有以下代码: public interface DummyInterface { } 及 当我需要时,我可以简单地注入这个,它工作得很好(见下文): 但是我做不到 @Inject DummyInterface 因为我有一个 无法处理“ClassWhereIInject.dummyInterface”:找不到参数“dummyInterface”的实际值 因此,我试图理解,如果我使用@createable和@Singleon的组合,而不在IEclipseContext中添加我想要注入的实例,那

我有以下代码:

public interface DummyInterface {
}

当我需要时,我可以简单地注入这个,它工作得很好(见下文):

但是我做不到

@Inject
DummyInterface
因为我有一个

无法处理“ClassWhereIInject.dummyInterface”:找不到参数“dummyInterface”的实际值

因此,我试图理解,如果我使用@createable和@Singleon的组合,而不在IEclipseContext中添加我想要注入的实例,那么我只能注入实现类而不能注入接口


我可以看出这是如何产生问题的,特别是当一个接口有多个实现类,并且依赖项注入框架不知道要注入哪个…也就是说,如果不使用@Named注释来指定

注射系统仅查找具有您指定名称的物品。它不会试图找到碰巧实现该接口的类。因此,不可以使用与接口名称不同的@createable类

另一种方法是使用“ContextFunction”。这是一个在注入系统查找名称时调用的函数。上下文函数可以创建合适的实例,并将其放入注入器的上下文中。有关上下文函数的详细信息如下

@Inject
DummyInterfaceImpl1
@Inject
DummyInterface