我来自编写许多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

10-08 15:57