我正在努力理解如何使用其他对象的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");
}