转换泛型类型的地图列表

时间:2018-04-09 15:05:03

标签: java generics bukkit

我正在尝试使用<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>>>

1 个答案:

答案 0 :(得分:1)

此处的通配符返回意味着API无法保证它知道地图中将包含哪些类型。另外,你不能强迫它在编译时进行转换,因为没有具体的保证。当您想要访问它并在运行时处理错误时,最好的希望是手动将其强制转换为Map

List<Map<?, ?>> configSpawnpoints = this.getConfig().getMapList("key");
// to use it
Map<Integer, List<String>> mapPoint = (Map) configSpawnpoints.get(0);