我有以下配置文件:
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()这样的东西,或者我不知道......这样的事情......有人有想法吗?
谢谢。
答案 0 :(得分:1)
对于第一个问题,您可以获取配置部分“arena1”并将所有值作为Map获取,而不会发出任何警告。为此,请使用:
config.getConfigurationSection("arenas.arena1").getValues(false);
或者,您可以将@SupressWarnings("unchecked")
放在您正在使用该代码的方法上。既然你知道你所获得的类型将是一个Map,那么警告并不是真正意义上的,尽管一些开发人员可能会考虑这种不好的做法。
对于第二个问题,您可以使用类似的方法。 getValues()本质上是一个getAll()类型的方法,它获取该部分中所有键和值的映射。所以你可以使用:
config.getConfigurationSection("arenas").getValues(false);