0

我目前正在编写一个 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

4

2 回答 2

2

解决此问题的方法是不使用自定义地图。您已经MemorySection从您的配置中获得了一个。

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

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

另请参阅bukkit 的配置 API 参考中的相关摘录:

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

于 2015-05-24T12:59:01.120 回答
0

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

于 2015-05-24T13:13:31.120 回答