gpt4 book ai didi

java - 吉斯。注入(inject)构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:42 25 4
gpt4 key购买 nike

我有一个单例:

public class MySingleton{
public static getInstance(){//typical singleton getInstance
...
}

//fields
private static volatile instance;
@Inject
private AnotherClassInstanceThatIWantToInjectHere anotherClassInst_BlaBla;
private MySingleton(){
...
anotherClassInst_BlaBla.doSmth();//NullPointerException happens!
...
}
}

这个NPE的原因是什么?它发生是因为它是构造函数还是因为它是单例?

最佳答案

MySingleton 的构造函数被调用时,instance 为空。 Guice 必须先构造 MySingleton 实例,然后才能注入(inject)任何内容。

Guice 有一个单例的概念:要么在模块的单例范围内绑定(bind)类,要么将类注释为 @Singleton。然后你就像往常一样注入(inject):

@Singleton
public class MySingleton {
private AnotherClassInstanceThatIWantToInjectHere anotherClassInst_BlaBla;

@Inject public MySingleton(AnotherClassInstanceThatIWantToInjectHere anotherClassInst_BlaBla) {
this.anotherClassInst_BlaBla = anotherClassInst_BlaBla;
anotherClassInst_BlaBla.doSmth();
}
}

关于java - 吉斯。注入(inject)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com