SakuranaRanbom
本帖最后由 SakuranaRanbom 于 2022-12-11 17:09 编辑

如题,我想把Loc写入yaml里。```
public class Loc implements ConfigurationSerializable {
    public String name;
    public String world;

    public double x;
    public double y;
    public double z;

    public Loc( String n,String w, double ix, double iy, double iz) {
        name = n;
        world = w;
        x = ix;
        y = iy;
        z = iz;
    }

    @Override
    public Map<String, Object> serialize() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", name);
        map.put("world", world);
        map.put("x", x);
        map.put("y", y);
        map.put("z", z);

        return map;

    }
}

```
但是效果是
```
locations:
  lol1:
    ==: cn.mcpe0.ContinueTeleportMain.Loc
    world: world
    name: lol1
    x: 107.84532392488167
    y: 70.0
    z: 226.3726157949549



```

结冰的离季
这是bukkit的序列化策略决定的,bukkit需要识别你这个配置是什么类型才能帮你序列化/反序列化对象
你可以通过 ConfigurationSerialization.registerClass(Class,alias)方法在注册类时指定一个别名来代替包名
但是 ==: 的形式无法改变,除非你自行对配置内容进行序列化/反序列化(不使用ConfigurationSerializable接口)

SakuranaRanbom
本帖最后由 SakuranaRanbom 于 2022-12-11 19:08 编辑
结冰的离季 发表于 2022-12-11 17:15
这是bukkit的序列化策略决定的,bukkit需要识别你这个配置是什么类型才能帮你序列化/反序列化对象
你可以通 ...

是您所说的这样。我在查阅资料时候也看到了https://www.spigotmc.org/wiki/in ... lization-section-2/
但是我在alias里面写别名后YAML里面的==:后面的内容并不会变,仍旧是 包名.类名。
但这个不影响主要功能。我还有一个关于yaml读数组的问题,可以麻烦您再看一看吗
问题网址如下
https://www.mcbbs.net/thread-1404199-1-1.html