【问题标题】:NotSerializableException when sending an Object [closed]发送对象时出现 NotSerializableException [关闭]
【发布时间】:2014-09-02 14:29:40
【问题描述】:

我想创建一个实例,把它放在一个容器上然后发送出去。

TransferContainer container = null;
    ...
  Class aClass = container.getByteCode();
    o = aClass.newInstance();
    ....// Some code
    ...
    container.setInstance(o);
    ObjectOutputStream out = new ObjectOutputStream(_s.getOutputStream());
    out.writeObject(container);

我收到这个错误

java.io.NotSerializableException 如果我不在容器中添加实例 o,我可以毫无问题地发送它。

【问题讨论】:

  • 阅读更多关于java.io.NotSerializableException的信息第一点使其可序列化
  • 对,这是本例的正确错误,你的问题是什么?
  • 如需更好的帮助,请尽快提供MCVE 来证明问题。
  • Class aClass = container.getByteCode();
  • 这个问题似乎是题外话,因为它是关于未能阅读文档。

标签: java objectoutputstream notserializableexception


【解决方案1】:

这个异常的原因是aClass或者aClass的一些实例字段没有实现Serializable。

【讨论】:

  • aClass 可以是用户给定的任何类,Class aClass = container.getByteCode();
  • @user567 很好。但是如果你想序列化它,它的所有实例字段都必须实现可序列化,或者如果不需要它们则使它们成为瞬态,否则这是预期的错误。
  • @user567 那你的设计错了。您只能允许可序列化的类。
  • 如果您要发布的是某种 API,请正确记录它,以便用户在发送任何类之前了解这一事实。
猜你喜欢
  • 2012-01-29
  • 2011-11-26
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
相关资源
最近更新 更多