【问题标题】:Java Transferable objects implementing serializableJava Transferable 对象实现可序列化
【发布时间】:2014-07-09 17:44:41
【问题描述】:

如果我们需要跨网络传输对象,我们让类实现 Serializable 。现在我的问题是它有什么不同?它是如何运作的?

【问题讨论】:

  • 跨网络:含义?
  • ^ 我也有同样的问题。如果您尝试通过网络发送信息,那么您不会完全发送 Java 对象。相反,例如,您可以从您的对象及其字段创建一个 JSON 文档,然后发送它。
  • @Trust 不一定。基于文本的序列化(例如 JSON 或 XML)对于跨语言协调或解耦客户端和服务器很有用。但是二进制序列化(例如 Java 对象——尽管不一定是 Java 的内置序列化)对于其他类型的网络通信可能更可取(例如,分布式缓存是最明显的(一致性,hazelcast),但远程代理是另一个经典示例。)
  • 有趣,我没有意识到这一点。我的错。

标签: java


【解决方案1】:

简而言之,有些情况下,您想传输一个对象,但又不想传输该对象的所有字段。然后让类实现 Serializable,这是一个标记,表明该类的任何对象都可以通过网络发送。类中要限制通过网络传输的字段,使用关键字transient 将它们标记为瞬态。这些字段可能在另一端获得了默认值。

您可能会看到 Serializable and transient 来回答为什么在一个地方实现接口并在其他 olac 中实现关键字。

更多详情见documentation by oracle on Serializable

documentation by oracle on transient

谢谢。

【讨论】:

    【解决方案2】:

    下面的段落描述了序列化是什么(取自《Effective Java》一书)。

    序列化提供了一个框架,用于将对象编码为字节流并从它们的字节流编码中重构对象。将对象编码为字节流称为序列化对象;反向过程称为反序列化它。一旦一个对象有 已序列化,其编码可以从一台正在运行的虚拟机传输 到另一个或存储在磁盘上以供以后反序列化。序列化提供了 用于远程通信的标准线级对象表示,以及标准 JavaBeans 组件架构的持久数据格式。

    您可以阅读 java 文档或任何其他标准 java 书籍(例如 Head First java)以了解什么是 Serilization 以及它是如何工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2011-11-21
      相关资源
      最近更新 更多