我知道以上内容是规范强制要求的,但想了解为什么?如果允许一个类中的多个构造函数具有@Inject 注释,将会出现什么问题。我说的是 JSR 330。
P.S:我知道 CDI 规范(即 JSR 299)利用了 JSR 330 的 @Inject。所以我也在问题中添加了那个标签。如果不适用于 CDI,请随意删除。
最佳答案
如果多个构造函数被@Inject
注解,容器在决定使用哪个来实例化类型时会产生歧义。
你会选择哪个
@Inject
public Foo (Bar bar) {}
或
@Inject
public Foo (Zoom zoom) {}
如果 Bar
和 Zoom
完全没有关系。
关于java - 为什么我们只能有一个带有@Inject 注解的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25066676/