【发布时间】:2020-08-04 17:21:16
【问题描述】:
我有一个枚举类来存储我的消息,我想在其中使用一个静态方法将它们放入一个 hashmap。
但是 NullPointerException 刚刚发生。 我该如何解决?
Msg.java
public enum Msg {
//Common
Message1("this"),
Message2("is"),
Message3("not"),
Message4("cool");
private String message;
private static HashMap<Msg, String> Msgmap;
private static HashMap<Msg, String> getMsgmap(){
return Msgmap;
}
Msg(String msg) {
this.message = msg;
if(getMsgmap() == null) {
setupMsgMap();
}
}
private static void setupMessageMap() {
Msgmap = new HashMap<Msg, String>();
for(Msg msg :values()){
Msgmap.put(msg, msg.message);
}
}
}
如果我替换
for(Msg msg:values()){
langmap.put(msg, msg.message);
}
与
System.out.println(Message1.message);
也会抛出 NullPointerException
但是如果我尝试在构造函数中打印我的枚举字符串。 它会起作用的。
【问题讨论】:
-
请提供您的枚举类的完整源代码。
-
您的代码似乎不完整,我收到编译错误。什么是语言映射?
-
你在“消息”类中有什么?
-
你应该遵循 Java 命名约定 变量名和方法名应该用驼峰命名; PascalCase 中的类名;和 UPPER_SNAKE_CASE 中的常量(包括枚举常量)。
-
对不起,我忘了用 Msg 替换 Lang。已编辑