【问题标题】:Receiving serializable objects and displaying the contents接收可序列化对象并显示内容
【发布时间】:2013-01-03 19:49:42
【问题描述】:

我正在用 java 编写一个应用程序,将对象发送到套接字。在连接的另一端,我有另一个应用程序需要接收对象并显示内容.......

我让我的应用使用扫描仪接收文本。

in = new Scanner(socket.getInputStream());
while (in.hasNext()
{
   system.out.println(in.next)
}

但是,当我尝试使用相同的方法发送对象时,代码无法编译。 printNumber() 是我试图发送的对象中的一个杂项。

in = new Scanner(socket.getInputStream());
while (in.hasNext()
{
   system.out.println(in.printNumber())
}

我曾尝试通过互联网查找教程或其他内容来解释我应该做什么,但我实际上并不知道我真正在寻找什么。谁能指出我正确的方向?

干杯

【问题讨论】:

  • 你能给出你看到的实际错误信息吗?

标签: java object serialization


【解决方案1】:

首先,您不是在发送的对象上调用方法,而是在Scanner 上调用方法。没有printNumber(),存在于Scanner 类中。

其次,不要对序列化对象使用扫描仪,Scanner 是为文本输入而设计的。请改用ObjectInputStream

in = new ObjectInputStream(socket.getInputStream()); 
System.out.println(in.readObject());

【讨论】:

    【解决方案2】:

    你是如何序列化数据的?

    如果你使用 ObjectOutputStream,你需要 ObjectInputStream 来读取它。

    如果您使用的是 XMLEncoder,则需要 XMLDecoder 才能读取它。

    对于每个序列化器,都有一个适当的反序列化器,您必须使用匹配的反序列化器。

    【讨论】:

    • 为此干杯,我正在使用 ObjectOutputStream!
    • ... 并且该调用的 Javadoc 的第一行显示“可以使用 ObjectInputStream 读取(重构)对象。”
    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2011-12-29
    • 2014-05-25
    相关资源
    最近更新 更多