我正在努力了解如何使用来自其他对象的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( “史蒂夫”);
答案 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");
}