我有这段代码:
File folder = new File(getDataFolder() + "/messages");
String[] fileNames = folder.list();
for (int i = 0; i < fileNames.length; i++) {
configManager.loadConfigFile("messages/" + fileNames[i]);
String lang = fileNames[i].substring(8, fileNames[i].length() - 4);
YamlConfiguration messagesConfig = configManager.getConfig("messages/" + fileNames[i]);
messagesConfigs.put(lang, messagesConfig);
}
private static Map<String, Map<String, String>> messages = new HashMap<String, Map<String, String>>();
public void loadMessages(String lang) {
for (String mes : PluginBase.plugin.messagesConfigs.get(lang).getKeys(false)) {
messages.put(lang, new HashMap<String, String>().put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes)));
}
}
public static String getMessage(String lang, String id) {
return messages.get(lang).get(id);
}
我有语言,来电者和留言员(&#34;我们&#34; - &gt;&#34; nopermission&#34; - &gt;&#34;您没有权限!&#34;)。当我致电getMessage(String lang, String caller)
时,我想收到语言lang
和来电者caller
的消息。当前代码在第messages.put(lang, new HashMap<String, String>().put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes)));
行
非常感谢。
答案 0 :(得分:0)
您收到该错误是因为HashMap.put()
未在空地图中返回任何内容。
如果你想解决这个问题,而不是使用:
messages
.put(
lang,
new HashMap<String, String>()
.put(
mes,
PluginBase.plugin.messagesConfigs.get(lang).getString(mes)
)
);
您应该使用:
Map<String, String> message = new HashMap<String, String>();
message.put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes));
messages.put(lang, message);