gpt4 book ai didi

java - 如何从Java中的构造函数反序列化对象?

转载 作者:行者123 更新时间:2023-12-02 07:01:04 24 4
gpt4 key购买 nike

我正在尝试做一些我以前从未做过的时髦的事情。

所以我想做的是:我通过执行以下操作创建一个对象

Player playerVar = new Player(1234);

Players 构造函数将查找名为 1234 的播放器,如果存在,则反序列化并将加载的对象存储在 'playerVar' 下,如果存在不是,它只会继续执行并给出一个'blank'`玩家对象。

我不确定是否有可能使当前对象成为同一对象的另一个实例,所以我在这里发布。

这本质上就是我想做的事情。

this = deserielizedObject

我知道这一切都可以通过加载对象,然后手动设置所有必要的变量来完成,但这并不理想。我如何从自身内部用其自身的另一个实例“替换”一个对象

这是我目前拥有的代码

player.java

    public class Player implements java.io.Serializable
{
Player(String GUID) // when loading a new player
{
Player player = loadPlayer(GUID);
//i want to set this to player
// something like this = player If you know what i mean....
}
Player()//when creating a new player
{

}

private Player loadPlayer(String GUID)
{
File f = new File("data/players/"+GUID+".ser");
if(!f.exists())
{
Player player = new Player();
return player;
}
Player player = null;
try
{
FileInputStream fileIn = new FileInputStream("data/players/"+GUID+".ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
player = (Player) in.readObject();
in.close();
fileIn.close();
}
catch(IOException i)
{
i.printStackTrace();
return null;
}
catch(ClassNotFoundException c)
{
System.out.println("Cant find Player Class!");
c.printStackTrace();
return null;
}
return player;
}

private int guid;
private String name;
private int bankMoney;
.......
...
.


}

最佳答案

您可以使用工厂类/方法。在您的情况下,最简单的方法可能是将 loadPlayer 作为公共(public)静态方法。

    public static Player loadPlayer(String GUID)
{
...
return player;
}

然后:

Player playerVar = Player.loadPlayer(1234);

关于java - 如何从Java中的构造函数反序列化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669082/

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