我有一个枚举,我试图使用foreach迭代它,并且由于某种原因它在我的第一个常量上返回null。我认为没有错。
首先,我正在创建并初始化一个hashmap来存储枚举,以便我可以将它们操作到我心中。
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。