我想通过ObjectStream发送一个类的对象:(数据包是Serializable
)
public class ServerPlayersListPacket extends Packet {
private static final long serialVersionUID = -7141960214853425631L;
private ArrayList<Player> players;
public ServerPlayersListPacket(ArrayList<Player> players) {
this.setPlayers(players);
}
public ArrayList<Player> getPlayers() {
return new ArrayList<Player>(Collections.synchronizedList(players));
}
public void setPlayers(ArrayList<Player> players) {
this.players = players;
}
}
但是ArrayList
存在问题。从其他网站收到它时,我得到了OptionalDataException
。
我发现它与ArrayList
同步有关。但是如何让它发挥作用?
答案 0 :(得分:0)
ArrayList未同步。矢量是。
对于流媒体,您需要字段可序列化,而不是同步。尝试通过“瞬态”打开不同的字段,因此,您会发现问题。
答案 1 :(得分:0)
我的诀窍是:
ServerPlayersListInitPacket
ServerNextPlayerPacket
,每个Player
Packet
醇>
此解决方案还允许客户端站点动态更新播放器列表,这更加顺畅。