我来自编写许多JavaScript,因此请多多包涵。
我有3个HashMaps,我在其他类的方法中引用了它。我的代码(非常简单)如下所示:
public class MainClass {
private HashMap<String,Nation> randomHashMap = new HashMap<String,Nation>();
DifferentClass d = new DifferentClass(this);
} //with getters/setters
public class DifferentClass {
private MainClass mc;
public void randomMethod() {
System.out.println("randomHashMap is " + (mc.getRandomHashMap() == null));
} //returns null
public DifferentClass(MainClass c) {
this.mc = c;
}
}
但是,当我用其他方法调用它们时,它们为null。
如何创建一个新的空HashMap?
最佳答案
您需要先初始化MainClass mc
变量,然后才能在DifferentClass#randomMethod
方法中使用它。另外,请确保您使用的是mc
变量而不是MainClass.getRandomHashMap()
方法(根据您的实际代码,我们不知道它的行为)。您的代码将如下所示:
public class DifferentClass {
private MainClass mc = new MainClass();
public void randomMethod() {
//assuming getRandomHashMap is the getter of randomHashMap attribute (and non static)
System.out.println("randomHashMap is " + (mc.getRandomHashMap() == null));
}
}
public class MainClass {
private HashMap<String,Nation> randomHashMap = new HashMap<String,Nation>();
DifferentClass d = new DifferentClass(this);
public HashMap<String,Nation> getRandomHashMap() {
return this.randomHashMap;
}
} //with getters/setters