Java YAML配置为自定义hashmap

时间:2015-05-24 12:40:26

标签: java hashmap yaml snakeyaml

我目前正在编写一个bukkit插件,它在YAML配置文件中存储有关播放器的大量信息。现在我希望插件在服务器启动时读取YAML文件,然后添加该信息。我有我的装载机,但我无法使用它,因为我的插件使用自定义地图。这是地图的代码:

Map<Integer, Map<String, Object>>

以下是从文件中获取信息的代码:

info = (Map<Integer, Map<String, Object>>) ticket.getConfigurationSection("tickets");

但是当我尝试使用该行代码运行插件时,我收到此错误:

Caused by: java.lang.ClassCastException: org.bukkit.configuration.MemorySection cannot be cast to java.util.Map

完整代码发布在此处:http://pastebin.com/Xgu8hwM0

2 个答案:

答案 0 :(得分:2)

解决方法是不使用自定义地图。您已从配置中获得MemorySection

使用它。您应使用方法getValues(boolean)而不是强制转换,该方法返回包含所有相关信息的Map<String, Object>,并由接口ConfigurationSection指定。

ticket.getConfigurationSection("tickets").getValues();

另见bukkit's Configuration API Reference的相关摘录:

  

getValues方法将返回值中的值   ConfigurationSection作为一个映射,它采用一个控制if的布尔值   嵌套的地图将在地图中返回。

答案 1 :(得分:0)

是的我解决了这个问题。我 HAD 使用Map<String, Object>但它有效,因为我的方式(Map<Integer, Map<String, Object>>)是第二部分!