我正在为我的球衣资源创建两个构造函数,但只有一个是能够调用的构造函数,
这是示例代码,
public class jerseyresoure {
private String name;
private int age;
@Inject
public jerseyresoure (String name){
this.name = name;
}
@Inject
public jerseyresoure (int age){
this.age= age;
}
}
带参数int的get cosntructor是成功调用的那个, 你能帮我解决这个问题吗?
答案 0 :(得分:1)
根据CDI规范,使用@Inject
注释多个构造函数是非法的(参见CDI规范的第3.9节):
如果bean类没有使用@Inject显式声明构造函数,那么不接受任何参数的构造函数就是bean 构造
如果bean类有多个带注释的构造函数@Inject,容器会自动检测问题并对其进行处理 作为定义错误。
bean构造函数可以包含任意数量的参数。 bean构造函数的所有参数都是注入点。
所以你可以做的如下:
public class jerseyresoure {
private String name;
private int age;
@Inject
public jerseyresoure (String name, int age){
this.name = name;
this.age = age;
}
}
我假设您正在使用生产者方法,以便注入值( name 和 age )。