我有一个枚举,我想通过使用foreach遍历它,由于某种原因,它在我的第一个常量上返回null。我没有看到任何错误。Java枚举导致NullPointerException
首先,我创建并初始化一个散列图来存储枚举,以便我可以将它们操纵到我的内心。
public class ScriptLoader {
private ResourceLocation resloc;
private File file;
private FileReader fr;
private BufferedReader br;
//Here
private Map<String, Node> nodes;
初始化这里:
public void loadScript() throws IOException{
file = resloc.getFile();
fr = new FileReader(file);
br = new BufferedReader(fr);
//Here
nodes = new HashMap<>();
this.setNodes();
if(Engine.stateOfEngine == EnumEngineState.DEBUGGER_ON) {
Engine.LOGGER.log("\tScript Loaded!", EnumLoggerTypes.DEBUG);
}
}
其次,我创建了一个名为setNodes()
方法将在父类的setNodes()
被称为ScriptLoader
常数添加到地图。
public void setNodes(){
for(EnumNodes node : EnumNodes.values()) {
nodes.put(node.getName(), node.getNode());
}
}
我在这里称之为:
public void loadScript() throws IOException{
file = resloc.getFile();
fr = new FileReader(file);
br = new BufferedReader(fr);
nodes = new HashMap<>();
this.setNodes();
if(Engine.stateOfEngine == EnumEngineState.DEBUGGER_ON) {
Engine.LOGGER.log("\tScript Loaded!", EnumLoggerTypes.DEBUG);
}
}
现在,我有一个enum,我有“节点”,我想遍历,可在setNodes()
可以看到列表方法。
现在的崩溃报告是here。出于某种原因,它将ExceptionInInitializationError
指向第一个枚举常量,并在枚举声明处指向空指针异常。我不认为枚举声明可能返回null。
首先你的pastebin不能正常工作......其次,你是否也可以显示你的Enum声明? –
发表你的enum代码 –
我做过了,我通过链接节省了空间,哦,哎呀,没有看到pastebin不工作。让我再试一次。 编辑:我得到它的工作。 –