Java 空指针异常:空错误

Java 空指针异常:空错误,java,hashset,Java,Hashset,我有这个散列集代码,当我尝试在上面运行我的编译方法时,我得到了Null指针异常:Null error。代码如下: private void initKeywords() { keywords = new HashSet<String>(); keywords.add("final"); keywords.add("int"); keywords.add("while"); keywords.add("if

我有这个散列集代码,当我尝试在上面运行我的编译方法时,我得到了Null指针异常:Null error。代码如下:

private void initKeywords() {
        keywords = new HashSet<String>();
        keywords.add("final");
        keywords.add("int");
        keywords.add("while");
        keywords.add("if");
        keywords.add("else");
        keywords.add("print");     
    }

    private boolean isIdent(String t) {
        if (keywords.contains(t)) {  ***//This is the line I get the Error***
            return false;
        }
        else if (t != null && t.length() > 0 && Character.isLetter(t.charAt(0))) {
            return true;
        }
        else {
            return false;
        }
    }

您确定正在运行
initKeywords()
之前的
isIdent()

您可能希望从此对象的构造函数调用
initKeywords

关键字
t
为空。无论是使用调试器还是打印语句,都应该很容易确定。如果
keywords
为null,我会假设
initKeywords()
还没有被调用。

我个人尝试远离init方法。如前所述,构造函数充当初始值设定项,静态块也充当初始值设定项:

private final static Set<String> KEYWORDS = new HashSet<String>();
static {
        keywords.add("final");
        keywords.add("int");
        keywords.add("while");
        keywords.add("if");
        keywords.add("else");
        keywords.add("print");
}
private final static Set KEYWORDS=new HashSet();
静止的{
关键词:添加(“最终”);
关键词.添加(“int”);
关键词.添加(“while”);
关键词.添加(“如果”);
关键词.添加(“其他”);
关键词:添加(“打印”);
}

嘿,记住接受你的答案。
private final static Set<String> KEYWORDS = new HashSet<String>();
static {
        keywords.add("final");
        keywords.add("int");
        keywords.add("while");
        keywords.add("if");
        keywords.add("else");
        keywords.add("print");
}