有没有办法可以在默认构造函数中使用注入(inject)的字段?下面是伪代码 -
public class SomeClass() {
@Inject private SomeField someField;
@Inject private SomeOtherField someOtherField;
private SomeImportantObject someImportantObject;
public SomeClass() {
SomeBuilder
.get()
.withFieldValue( someField.getValue() )
.withSomeOtherFieldValue( someOtherField.getValue() )
.build();
}
}
现在我面临的问题是,当我调用 injector.getInstance( SomeClass.class )
时,我得到一个 NullPointerException
。
Caused by: java.lang.NullPointerException
at com.something.something.SomeClass.<init>(SomeClass.java:10)
现在我明白发生这种情况是因为在注入(inject)依赖项之前调用了默认构造函数。
但是,有没有什么方法可以在之前注入(inject)依赖项?
或者,有更好的方法吗?
Note, I do not want to inject these dependencies using constructor as I am expecting around 20-30 of such fields.
最佳答案
如果这些字段被注入(inject)纯粹是为了供 SomeBuilder
使用来生成 SomeImportantObject
,那么:
- 注入(inject)已设置这些字段的
SomeBuilder
实例,或者 - 注入(inject)
SomeImportantObject
的实例。
我理解您希望避免使用太多参数使构造函数膨胀。在这种情况下,我想看看这些属性是否可以在逻辑上分组为几个(或单个)新类型,而不是作为构造函数参数传递。
关于java - Guice - 在构造函数内部使用注入(inject)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52047307/