java - 为什么我们只能有一个带有@Inject 注解的构造函数?

标签 java cdi guice jsr330

我知道以上内容是规范强制要求的,但想了解为什么?如果允许一个类中的多个构造函数具有@Inject 注释,将会出现什么问题。我说的是 JSR 330。

P.S:我知道 CDI 规范(即 JSR 299)利用了 JSR 330 的 @Inject。所以我也在问题中添加了那个标签。如果不适用于 CDI,请随意删除。

最佳答案

如果多个构造函数被@Inject注解,容器在决定使用哪个来实例化类型时会产生歧义。

你会选择哪个

@Inject
public Foo (Bar bar) {}

@Inject 
public Foo (Zoom zoom) {}

如果 BarZoom 完全没有关系。

关于java - 为什么我们只能有一个带有@Inject 注解的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25066676/

相关文章:

java - 当开头或结尾为空时,正则表达式不匹配

java - JComponent 未正确绘制

java - Guice 配置错误 没有绑定(bind)实现

java - 有没有办法在java Scanner中使用变量而不是路径

java - 在启动时获取正确的 Id 小部件

带有 Apache CXF 和 CDI 的 Spring Boot

java - 我可以在 JavaEE 8 中注入(inject) 2 个同名的接口(interface)吗?

java - 有没有办法知道是否有CDI事件的观察者?

java - 让 GWT RPC 与 Guice 一起玩

java - 从带有通配符路径的 servlet 发送时出现 404