Bukkit配置 - 获取子部分和安全铸造

时间:2014-03-04 00:41:32

标签: java plugins configuration minecraft bukkit

我有以下配置文件:

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

因此。现在我想得到一个竞技场,并将其转换为竞技场对象,我有一个构造函数在那里拍摄地图。所以我这样做:

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

这很有效。但是:我在日食中得到以下警告:

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

我不明白为什么会出现这种情况。但是我怎样才能改变获取信息的方式来避免这种情况,以便进行“安全”演员?

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

或者,您可以将@SupressWarnings("unchecked")放在您正在使用该代码的方法上。既然你知道你所获得的类型将是一个Map,那么警告并不是真正意义上的,尽管一些开发人员可能会考虑这种不好的做法。

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

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