gpt4 book ai didi

java - 使用 libgdx 反序列化 json 时调用对象构造函数

转载 作者:行者123 更新时间:2023-11-30 08:49:20 24 4
gpt4 key购买 nike

为什么在反序列化期间没有调用我的 player 对象构造函数?有没有办法使用这种方法调用构造函数?

使用 com.badlogic.gdx.utils.Json 将 json 加载到 java 对象中 ..

LevelModel ld = new Json().
fromJson(LevelModel.class, Gdx.files.internal("levels/level1.json"));
setLevel(new Level(ld));

这是我的 JSON ..

{
"gravity": {
"x": 0.0,
"y": 0.0
},

"sounds": [
BGMUSIC
],

"player": {
"maxSpeed": 10.0
}
}

LevelModel.java 看起来像这样..

public class LevelModel {

private Vector2 gravity;
private Vector<AudioCollection> sounds = new Vector<AudioCollection>();
private Character player;

// with getters/setters for each ..
}

字符实现..

public class Character {

private float maxSpeed;

public Character (){
System.out.println("empty - charercter constr");
}

/**
* @param speed
*/
public Character(float maxSpeed) {

System.out.println("charercter constr");
setMaxSpeed(maxSpeed);
}

// with getters/setters for each ..
}

最佳答案

默认情况下,libgdx json 使用反射在反序列化时生成实例。因此它将创建一个空对象,然后将字段值添加到其中。不会调用设置玩家最大速度的构造函数。

如果您需要在此处执行一些奇特的逻辑,您可以使用 Json.Serializable 编写自己的反序列化逻辑,如 Customizing Serialization 中所述.

关于java - 使用 libgdx 反序列化 json 时调用对象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31507466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com