我正在尝试使用<java.util.List<java.util.Map<?,?>>>
类型的插件ConfigurationSection#getMapList
。
我知道在这种特定情况下,它返回的值将是类型
List<Map<String, List<Integer>>>
。
所以我写了这个:
List<Map<String, List<Integer>>> configSpawnpoints = this.getConfig().getMapList("key");
但得到错误:
incompatible types: java.util.List<java.util.Map<?,?>> cannot be converted to
java.util.List<java.util.Map<java.lang.String,java.util.List<java.lang.Integer>>>
如何将List<Map<?,?>>
投射到List<Map<String, List<Integer>>>
?
答案 0 :(得分:1)
此处的通配符返回意味着API无法保证它知道地图中将包含哪些类型。另外,你不能强迫它在编译时进行转换,因为没有具体的保证。当您想要访问它并在运行时处理错误时,最好的希望是手动将其强制转换为Map
。
List<Map<?, ?>> configSpawnpoints = this.getConfig().getMapList("key");
// to use it
Map<Integer, List<String>> mapPoint = (Map) configSpawnpoints.get(0);