为什么有时这个静态变量在null类中呢?

时间:2013-07-13 01:20:37

标签: java android

我已定义此代码。

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
    }
}

这是因为内存分配失败还是会释放一些地方。只是不要 了解我的代码中有什么问题。也许这不是初始化的可靠方法。

1 个答案:

答案 0 :(得分: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);
    }
}

如果你这样做,你可能不会真正需要Enum中的功能,因为你可以做到

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