了解在空指针异常中引用其他类



我正在努力理解如何使用其他对象的java对象。我有3个简单的课程:1) 环境对象

public class Environment {
protected String envName;
public Environment(String envName){
    this.envName = envName;
}
// get and set methods
public String getenvName(){
    return envName;
}
public void setenvName(String envName){
    this.envName = envName;
}
}

2) 将填充此对象的类

public class FetchConfig {
Environment environment;
public FetchConfig() {
}
public void buildConfig() {
    environment.setenvName("Steve");
}
}

3)带有main方法的类将与我的环境对象一起使用:

public class WorkWithEnvironment {
private FetchConfig config;
public static void main(String[] args) throws FileNotFoundException,
        IOException {
    WorkWithEnvironment w = new WorkWithEnvironment();
    w.setupConfig();
    w.readEnvNames();
}
private void setupConfig() throws FileNotFoundException, IOException {
    config = new FetchConfig();
    config.buildConfig();
}
private void readEnvNames() {
    System.out.println("Environment name is: "
            + config.environment.getenvName());
}
}

但是当我运行它时,我不断在这里得到一个NPE(NullPointerException)-> environment.setenvName("Steve");

你从来没有告诉 FetchConfig 使用哪个环境。我认为您的意思是在 FetchConfig 的默认构造函数中具有environment = new Environment();或类似的功能。

您还可以在 buildConfig 方法中使用类似的行初始化变量环境。

您的第二个类在实例化环境类之前尝试在环境中设置值,因此当您尝试为其赋值时,它是 null。

public class FetchConfig {
Environment environment;
public FetchConfig() {
    environment = new Environment(null);
}
public void buildConfig() {
    environment.setenvName("Steve");
}

最新更新