【问题标题】:How to send an object does not implement Serializable interface in java DatagramSocketjava DatagramSocket中如何发送对象不实现Serializable接口
【发布时间】:2020-08-14 06:51:03
【问题描述】:

我尝试使用多线程创建一个 java 游戏,该游戏提供多人游戏,所以我需要创建一个网络以使其提供多人游戏。 我完成了游戏,我尝试创建网络,我正在寻找使用该网络发送对象的方法,我找到了使用 ByteArrayInputStream、ObjectInputStream 接收对象和 ByteArrayOutputStream、ObjectOutputStream 发送对象的方法,我知道对象必须实现 Serializable 接口才能在网络中发送和接收它。 现在我有一个问题,我使用 BufferStrategy 和 Graphics 对象来绘制我的游戏,但是 BufferStrategy 没有实现 Serializable 接口。 我该如何解决这个问题?This is method to render my game and exception i got it

【问题讨论】:

  • 首先尝试发送这些对象中的任何一个都没有意义。每个用户都应该有自己的。您应该发送的是游戏数据,而不是 JDK 类。
  • @user207421 .. 我知道我发送 JDK 对象没有意义,但我不发送这个对象我想发送包含所有对象和游戏所有内容的游戏对象,但是当我尝试发送这个对象时,我得到了那个异常,一开始我不明白,但后来我明白这个异常意味着 BufferStrategy 对象没有实现 Serializable 接口
  • 您可以复制问题中的代码,而不是提供截图。我可以看到的主要问题是您不应该序列化渲染器。渲染器应该只驻留在客户端。

标签: java networking udp


【解决方案1】:

为了解决这个问题,我将transient 放在JDK 类的任何对象实例之前,并且该类没有实现Serializable 接口。

解释如何使用它的代码。

那些是放在transient之前的对象

private BufferStrategy bs;
private Graphics g;

那些是放在transient之后的对象

private transient BufferStrategy bs;
private transient Graphics g;

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 2015-08-29
    • 2012-08-03
    • 2015-01-27
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多