我有这个代码:
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);
}
我有语言、呼叫者和消息者("我们"->"无权限"->"您没有权限!")。当我呼叫getMessage(String lang, String caller)
时,我想获得语言lang
和呼叫方caller
的消息。当前代码在messages.put(lang, new HashMap<String, String>().put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes)));
行出现错误
非常感谢。
由于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);