静态初始化和仍然为空指针异常



我遵循了从其他SO帖子构建静态哈希图的建议,但是现在当我尝试访问HashMap中的信息时,我遇到了一个空点异常。有什么想法吗?

public final class EMUtil {
static private HashMap<String,TreeSet<String>> EMGroups;
static{
    HashMap<String,TreeSet<String>> EMGroups = new HashMap<String, TreeSet<String>>();
    TreeSet<String> temp=new TreeSet<String>();
    temp.addAll(returnArray("99201","99202","99203","99204","99205"));
    EMGroups.put("Set 1",temp);
    temp=new TreeSet<String>();
    temp.addAll(returnArray("99211","99212","99213","99214","99215"));
    EMGroups.put("Set 2",temp);
    ...
}
static public boolean isEM(String curCPT){
    if((curCPT.compareTo("99200")>0)&&(curCPT.compareTo("99311")<0)){
        for(TreeSet<String> value:EMGroups.values()){
            if(value.contains(curCPT)){
                return true;
            }
        }
    }
    return false;
}

知道发生了什么吗?如果我尝试拥有一组我可以访问的集合,以检查字符串是否在该集合中的组中/它在哪个组中,是否有更好的方法来构建它?

static{
    HashMap<String,TreeSet<String>> EMGroups = new HashMap<String, TreeSet<String>>();

此变量声明隐藏静态 EMGroups 类成员。应该是:

static{
    EMUtil.EMGroups = new HashMap<String, TreeSet<String>>();

虽然你实际上可以放弃"EMUtil"。

最新更新