以.yml文件的形式将hashmap数据回收到hashmap中



你好,我正在创建一个Minecraft插件,正在观看youtube教程和关于如何将数据存储和回收到yml文件的解释。这个插件需要玩家的UUID,并将其与游戏中的区块一起存储,视频中的人正在项目堆栈数组中使用它。我试图将代码转换为使用字符串,但它只给了我更多的错误,我想知道如何做到这一点,这样当它被放回哈希图时,它就不会覆盖整个数组

public void restoreClaimedChunks() {
this.getConfig().getConfigurationSection("data").getKeys(false).forEach(key ->{
@SuppressWarnings("unchecked")
UUID[] content = ((List<UUID>) Objects.requireNonNull(this.getConfig().get("data." + key))).toArray(new UUID[0]);
chunks.put(key, content);
});
}

我这样做时收到的错误是不兼容的类型:java.util.UUID[]无法转换为java.util.UUID

yml文件看起来像

ZeradentSMP: zoren3105.zeradentsmp.ZeradentSMP
name: ZeradentSMP
version: 1.0
author: Zoren

由于UUID不实现ConfigurationSerializable,YAML文件中的UUID存储为字符串,这意味着当您尝试将字符串列表强制转换为UUID列表时,将发生强制转换错误。尝试从YAML文件中获取字符串列表(通过强制转换为List<String>或使用ConfigurationSection.getStringList()(,然后迭代,将每个字符串转换为具有UUID.fromString()的UUID。

编辑

如果您收到的错误是UUID[]UUID之间的强制转换错误,则可能导致这种情况的唯一原因是chunks映射中的密钥类型为UUID,并且您正试图将UUID[]放入其中。

您可以更改映射中键的类型,也可以不从YAML文件中获取UUID列表。

最新更新