我目前正在编写一个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
答案 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>>
)是第二部分!