如题目,我有个自定义的类Loc,然后想把ArrayList<Loc> locs存入YAML,并开服时读取并载入locs。
在写入的时候遇到了YAML写入自定义类的对象时会在第一行带上包+类名 - 编程开发 - Minecraft(我的世界)中文论坛 - (mcbbs.net)这个问题,算是已经解决。
但是在读取的时候再次出错。
public ArrayList<Loc> get(ArrayList<Loc> locs){
//locs = (Vector<Loc>) locaConfig.get("locations");
var locc = (ArrayList<Loc>) locaConfig.get("locations");
for(var ele: locc){
Bukkit.getLogger().info(ele.name);
}
return locc;
}
这是我的一个配置读取的。
yml里面是2个元素。locc读取后的size是2,但是它里面的内容都是null(我在下面用for循环测试输出了一下)
在写入的时候遇到了YAML写入自定义类的对象时会在第一行带上包+类名 - 编程开发 - Minecraft(我的世界)中文论坛 - (mcbbs.net)这个问题,算是已经解决。
但是在读取的时候再次出错。
public ArrayList<Loc> get(ArrayList<Loc> locs){
//locs = (Vector<Loc>) locaConfig.get("locations");
var locc = (ArrayList<Loc>) locaConfig.get("locations");
for(var ele: locc){
Bukkit.getLogger().info(ele.name);
}
return locc;
}
这是我的一个配置读取的。
yml里面是2个元素。locc读取后的size是2,但是它里面的内容都是null(我在下面用for循环测试输出了一下)
本帖最后由 美味的曲奇 于 2022-12-11 19:26 编辑
反序列化需要一个 deserialize 静态方法,因为是静态方法所以不在接口中
在 这里 没看到你的deserialize 方法,是否是这方面的问题
编辑补充:反序列化方法可以是
- deserialize(Map<String,Object>)
- valueOf(Map<String,Object>)
- <constructor>(Map<String,Object>)
反序列化需要一个 deserialize 静态方法,因为是静态方法所以不在接口中
在 这里 没看到你的deserialize 方法,是否是这方面的问题
编辑补充:反序列化方法可以是
- deserialize(Map<String,Object>)
- valueOf(Map<String,Object>)
- <constructor>(Map<String,Object>)