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来处理构造。确保对象不被创建为具有无效状态(即,由于字段注入而导致的空字段)的最佳方法是使用构造函数注入。