java - Bukkit Config - 获取分段和安全转换

标签 java plugins configuration minecraft bukkit

我有以下配置文件:

arenas
  arena1
    info: infotest
    info2: info2test
  arena2
    info: infotest
    info2: info2test

所以。现在我想获得一个竞技场,并将其转换为竞技场对象,我有一个构造函数,其中包含一张 map 。所以我做了以下事情:

Arena a = new Arena((Map<String, Object>) getConfig().get("arenas.arena1"));

这正在起作用。但是:我在 eclipse 中收到以下警告:

Type safety: Unchecked cast from Object to Map<String,Object>

我明白为什么会出现这种情况。但我怎样才能改变获取信息的方式来避免这种情况,从而进行“安全”转换?

我的第二个问题:现在我想从竞技场获取所有子 map 。"" 并在插件加载时初始化它们。我怎样才能获得所有这些?我找不到像 arenas.getAll() 这样的东西,或者我不知道..像这样的东西..有人有想法吗?

谢谢。

最佳答案

对于第一个问题,您可以获取配置部分“arena1”并获取所有值作为 map ,而不会出现任何警告。为此,请使用:

config.getConfigurationSection("arenas.arena1").getValues(false);

或者,您可以将 @SupressWarnings("unchecked") 放在使用该代码的方法上。由于您知道您获得的类型将是 Map,因此该警告实际上并没有多大意义,尽管一些开发人员可能认为这种做法不好。

对于你的第二个问题,你可以使用类似的方法。 getValues() 本质上是 getAll() 类型的方法,它获取该部分中所有键和值的映射。所以你可以使用:

config.getConfigurationSection("arenas").getValues(false);

关于java - Bukkit Config - 获取分段和安全转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22160617/

相关文章:

java - 创建带有 Mockito 错误的可序列化模拟

java - 在 Selenium 中设置 Cookie 而不访问页面

javascript - 当字段改变时捕获事件

java - 双链表

php - 检查 WooCommerce 是否处于事件状态以及使用的版本

debugging - Sublime Text 3和Web Inspector插件

hibernate - 配置 Hibernate 以进行生产和测试

java - 配置变更跟踪系统

.net - WCF 配置 - 将其从 app.config 中分离出来

Java并发场景——需要同步还是不需要?