Java @Injecton字段在GUI中提供NullPointerException
我有一个类Java @Injecton字段在GUI中提供NullPointerException,java,dependency-injection,guice,Java,Dependency Injection,Guice,我有一个类MyTransformer,它使用: ZonedDateTime currentDateTime=ZonedDateTime.ofInstant(generator.generate(),polishZone) 发电机接口: public interface Generator { Instant generate(); } 它被注入到MyTransformer: public class MyTransformer { @Inject
MyTransformer
,它使用:
ZonedDateTime currentDateTime=ZonedDateTime.ofInstant(generator.generate(),polishZone)代码>
发电机接口:
public interface Generator {
Instant generate();
}
它被注入到MyTransformer
:
public class MyTransformer {
@Inject
private Generator Generator;
真正的实现在另一个类中:
public class DateTimeGenerator implements Generator {
@Override
public Instant generate() {
return Instant.now();
}
}
然而,当我尝试从测试类newmytransformer()
时,我总是看到生成器是null
。在我的main模块中,我有绑定(Generator.class).to(DateTimeGenerator.class)
。是否可以在现场注入发生器
?我可以在构造函数中注入它,然后它就可以工作。“我可以在构造函数中注入它,然后它就可以工作”无论如何,构造函数注入更好。为什么不直接使用它呢?它是由服务调用的,我不是它的所有者,它必须有默认的构造函数/该外部服务调用了无参数构造函数吗?如果他们直接实例化这个东西,那么他们是在DI框架之外操作的,所以当然什么都不会injected@Michael,我还在测试类中调用它,在调试中我看到它总是null
。问题出在我实际上找不到的其他地方。如果你调用new MyTransformer
,则不会注入任何内容。你需要让Guice来处理构造。确保对象不被创建为具有无效状态(即,由于字段注入而导致的空字段)的最佳方法是使用构造函数注入。