Java:无法访问公共成员变量

Java:无法访问公共成员变量,java,Java,我正在努力访问一个成员变量,却找不到任何解释。如果我调用app.initDB(config),它会工作;但是,当我按原样调用initDB()时,config为null。请查看代码段以查找有问题的行 我希望在这里为app对象调用配置时对其进行初始化 public class App { public RestConfig config; public App(RestConfig config) { config = config; } publ

我正在努力访问一个成员变量,却找不到任何解释。如果我调用app.initDB(config),它会工作;但是,当我按原样调用initDB()时,config为null。请查看代码段以查找有问题的行

我希望在这里为app对象调用配置时对其进行初始化

public class App {
    public RestConfig config;

    public App(RestConfig config) {
        config = config;
    }

    public void initDB() { // miss type returns
        System.out.println(config); // <-- prints null , why?**
    }
}

class RestMain {
    public static void main(String[] args) throws IOException {
        RestConfig config = new RestConfig();
        App app = new App(config);
        app.initDB();
    }

}

public class RestConfig {
    //some config...
}
公共类应用程序{
公共RestConfig配置;
公共应用程序(RestConfig配置){
config=config;
}
public void initDB(){//未命中类型返回

System.out.println(config);//您需要将构造函数更改为具有
this.config=config

public App(RestConfig config){
        config = config;
      } 
这里发生的事情是将config的值分配给传递的config值,而不是类级别变量

您需要做的是:

public App(RestConfig config){
        this.config = config;
      } 

因此,类级别变量/字段保持为空。

很高兴看到yogesh帮助yogesh。任何值得使用的IDE都会在此分配上显示警告。您应该检查是否存在警告,如果没有,请研究如何为特定IDE打开“自分配”警告。(如果你不使用IDE……考虑使用一个可以帮助你捕捉bug)@安迪我现在使用cScice,但是我需要开始使用IDE。