我有这样的代码:
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);
}
我有语言、调用者和消息传递器("us“-> "nopermission”“->”您没有权限!)当我调用getMessage(String lang, String caller)
时,我想获得lang
语言和调用者caller
的消息。当前代码在行messages.put(lang, new HashMap<String, String>().put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes)));
处出现错误
太感谢了。
发布于 2015-04-05 21:39:27
您将得到该错误,因为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);
https://stackoverflow.com/questions/28753862
复制相似问题