java - 转换泛型类型的 map 列表

标签 java generics bukkit

我正在尝试使用龙头的 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/

相关文章:

java - 当我尝试运行此应用程序时出现 setOnClickListener 错误

generics - Kotlin:使泛型类型的子类继承函数并限制可用的输出类型

swift - Swift 字典的通用项目 getter

generics - 我可以检查变量是 T 型吗?

java - 如何在 Java 中创建一个固定大小的泛型数组?

java - 如何从 Windows 运行 ZooInspector

java - Spark-Java静态文件位置问题

java - 从 GitHub 编译 Bukkit 插件

java - 获取 Bukkit 中相对于某个方 block 以及相对于玩家方向的方 block

java - Bukkit/JavaPlugin - 设置现有制作配方的结果不起作用