了解引用java中的其他类 - 空指针异常

时间:2014-03-01 19:40:06

标签: java nullpointerexception

我正在努力了解如何使用来自其他对象的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方法的类将使用我的Environment对象:

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( “史蒂夫”);

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

public class FetchConfig {

Environment environment;

public FetchConfig() {
    environment = new Environment(null);
}

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