我有一個枚舉,我想通過使用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不工作。讓我再試一次。 編輯:我得到它的工作。 –