Java 具有定义同一类的多个模块的喷油器。如何选择用于注射的模块?

Java 具有定义同一类的多个模块的喷油器。如何选择用于注射的模块?,java,dependency-injection,guice,Java,Dependency Injection,Guice,好的,所以情况不像标题中那么简单。事情是这样的 我有一个类ComplexClass,它希望向其中注入几个参数。参数“A”在模块A中定义,参数“B”在模块B中定义。另一方面,参数“C”在模块C1和模块C2中定义 我有一个使用上述四个模块创建的单喷油器。对不起,它必须是单注射器 现在,我想创建两个不同的ComplexClass实例——一个第三个参数来自模块C1,另一个来自模块C2 谢谢 这个问题通常被称为“机器人腿问题” 见: 请看Jesse Wilson的回答: 根据PrivateModule

好的,所以情况不像标题中那么简单。事情是这样的

我有一个类ComplexClass,它希望向其中注入几个参数。参数“A”在模块A中定义,参数“B”在模块B中定义。另一方面,参数“C”在模块C1和模块C2中定义

我有一个使用上述四个模块创建的单喷油器。对不起,它必须是单注射器

现在,我想创建两个不同的ComplexClass实例——一个第三个参数来自模块C1,另一个来自模块C2


谢谢

这个问题通常被称为“机器人腿问题”

见:

请看Jesse Wilson的回答:

根据
PrivateModule
s解决方案,您只需在
PrivateModule
s中安装C1和C2模块,每个模块都用不同的绑定注释绑定您的
ComplexClass


还有其他可能的解决方案,比如使用辅助注入来注入可能来自两个地方之一的依赖项。

好的,所以我想出了一种方法——让每个C模块定义一个@Provides方法,在这里他们用自己的方法注释第三个构造函数参数。但是,有没有一种方法可以让模块甚至不必知道存在其他参数?所以只需指定任何C参数都必须是他们的?注释(no@Provides)应该足够了,不是吗?