Java公共成员变量异常:调用initDB()时config为null求助
问题定位与修复方案
嘿,这问题我太熟了!一眼就瞅出构造函数里的坑了👇
核心问题:构造函数的自赋值错误
你看App类的构造函数代码:
public App(RestConfig config) { config = config; }
这里的参数名config和类的成员变量名config完全一致,Java在解析时会优先把config识别为局部方法参数。所以你写的这行代码本质是把参数config赋值给它自己,完全没对成员变量this.config做任何初始化操作!
这就直接导致了你的现象:
- 调用带参数的
app.initDB(config)时,方法用的是传入的局部参数config,所以能正常工作; - 但调用无参的
initDB()时,方法访问的是未被初始化的成员变量config,自然输出null。
修复方法
只需要在构造函数的赋值语句前加上this.,明确指定要赋值的是类的成员变量:
public App(RestConfig config) { this.config = config; }
修改后,当你创建App对象时,传入的config就会正确赋值给成员变量,之后调用无参的initDB()时,就能拿到预期的配置值了。
另外给个小建议:日常编码时,成员变量尽量用private修饰,通过getter/setter方法访问,既能避免这类命名冲突的低级错误,也更符合面向对象的封装设计原则~
内容的提问来源于stack exchange,提问作者Yogesh Gupta
相关产品推荐
相关产品推荐

