gpt4 book ai didi

java - 可序列化的 ObjectOutputStream 对象

转载 作者:行者123 更新时间:2023-11-30 09:09:07 27 4
gpt4 key购买 nike

我想制作服务器客户端应用程序并使用 ObjecOutputStream 将对象发送到客户端,但我想发送的对象是 ObjectOutputStream 对象,我需要以某种方式对其进行序列化,但我不知道如何......有什么建议吗?

我需要发送对象播放器:

public class Player implements Serializable{
ObjectOutputStream out;
public Player(ObjectOutputStream out){
this.out = out;
}
public send(){
this.out.writeObject(this);
}
}

在启动类似的代码之后,一个异常显示如下:
java.io.NotSerializableException:java.io.ObjectOutputStream

最佳答案

因为 ObjectOutputStream 没有实现 Serializable,所以你的 Player 类不能被序列化。要修复它:

class Player implements Serializable {
private transient ObjectOutputStream out;

// the rest
}

在我看来,Player 不应该知道如何发送自己。您可以引入一个新类 PlayerSender:

class PlayerSender {

private ObjectOutputStream outputStream;

public PlayerSender(OutputStream out) {
this.outputStream = new ObjectOutputStream(out);
}

public void send(Player player) {
this.outputStream.writeObject(player);
}

}

//---- Usage ----

List<Player> players = // make a bunch of players;

PlayerSender playerSender = new PlayerSender(getNetworkStream());
//PlayerSender playerSender = new PlayerSender(new FileOutputStream("/players/list.txt");
//PlayerSender playerSender = new PlayerSender(socketConnection.getOutputStream());
for (Player player : players) {
playerSender.send(player);
}

关于java - 可序列化的 ObjectOutputStream 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186308/

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