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

Yog*_*pta 0 java

我正在努力访问成员变量,但无法找到任何解释.如果我调用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...
}
Run Code Online (Sandbox Code Playgroud)

Yog*_*h_D 8

你需要改变你的构造函数this.config = config.

public App(RestConfig config){
        config = config;
      } 
Run Code Online (Sandbox Code Playgroud)

这里发生的事情是你将config的值分配给config的传递值而不是类级变量.

你需要做的是:

public App(RestConfig config){
        this.config = config;
      } 
Run Code Online (Sandbox Code Playgroud)

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

  • 任何值得使用的IDE都会对此作业发出警告.您应该检查是否有警告,如果没有,请调查如何打开您的特定IDE的"自我分配"警告.(如果您没有使用IDE ...请考虑使用一个可能有帮助你抓到了虫子) (2认同)