0

我已经定义了这个代码。

public class AAA {
    public static final Map<String, String> gList = new HashMap<> {{
        put("xxx", "xxx");
        put ....
    }};
    public static AAA instance;
    public static AAA getInstance() {
        if (instance == null)
            instance = new AAA();
        return instance;
    }

    public String calledFunc(String k) {
        return gList.get(k);    
    }
}

public class BBB {
    ...
    public void callingFunc(String k) {
        AAA.getInstance().calledFunc(k);  // <=  NULL pointer some time
    }
}

这是因为内存分配失败还是会在某个地方被释放。只是不明白我的代码有什么问题。也许这不是可靠的初始化方式。

4

1 回答 1

1

不久前我尝试做类似的事情来保存类之间的数据,我最终选择了一个Enum

试试这样的吧?

public enum AAA {
    INSTANCE;
    public static final Map<String, String> gList = new HashMap<> {{
        put("xxx", "xxx");
        put ....
    }};
    public String calledFunc(String k) {
        return gList.get(k);
    }
}

如果你这样做了,你就不需要枚举中的函数,因为你可以这样做

public class BBB {
    ...
    public void callingFunc(String k) {
        AAA.gList.get(k);  // <=  NULL pointer some time
    }
}
于 2013-07-13T01:40:58.700 回答