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

时间:2014-07-31 18:46:58

标签: java cdi guice jsr330

我知道以上是规范要求,但想了解原因?如果允许类中的多个构造函数具有@Inject批注,那么问题是什么。我说的是JSR 330.

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

1 个答案:

答案 0 :(得分:2)

如果多个构造函数使用@Inject进行注释,则容器将决定使用哪个构造函数来实例化该类型。

你会选择哪个

@Inject
public Foo (Bar bar) {}

@Inject 
public Foo (Zoom zoom) {}

如果BarZoom之间完全没有关系。