我正在尝试使用龙头的 ConfigurationSection#getMapList
其类型为 <java.util.List<java.util.Map<?,?>>>
.
我知道在这种特定情况下,它返回的值将是以下类型
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>>>
?
最佳答案
此处返回的通配符意味着 API 无法保证它知道映射中将包含哪些类型。此外,您不能强制它在编译时进行强制转换,因为没有具体的保证。您最好的希望是当您想要访问它并在运行时处理错误时将其手动转换为 Map
。
List<Map<?, ?>> configSpawnpoints = this.getConfig().getMapList("key");
// to use it
Map<Integer, List<String>> mapPoint = (Map) configSpawnpoints.get(0);
关于java - 转换泛型类型的 map 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49736112/