java - 为什么 Date、BigInteger、Double 等值类应该实现 Serialized?

标签 java serialization

在探索 Java 类时,我意识到 Date AtomicInteger、AtomicLong、BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 等值类应该实现 Serialized。

你能帮我理解为什么所有这些类都应该实现标记接口(interface) Serialized 吗?

最佳答案

Java provides a mechanism, called object serialization where an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object.

添加Serialized标志着它们具有所描述的功能。

序列化的使用示例:

可序列化性允许您将类流式传输到文件中并从文件中再次读取它。

Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the methods for serializing and deserializing an object.

public final void writeObject(Object x) throws IOException
public final Object readObject() throws IOException, ClassNotFoundException

这些方法允许您序列化和反序列化标记为可序列化的类。

其他信息:

正如 @Basil Bourque 所提到的 - 当您阅读有关 a.e. 的文档时BigInteger 你发现这个:

static BigInteger ONE //The BigInteger constant one.
static BigInteger TEN  //  The BigInteger constant ten.
static BigInteger ZERO //The BigInteger constant zero.

来源:JavaDocs

与 Integer 相比,BigInteger 不是单个原始对象。它由几个对象组成。它们一起表现得像一个原始整数。除非序列化程序遇到此对象,否则它不知道该类是否可序列化(没有真正的原始类型)。您可以通过手动将类标记为 Serializable 来处理此问题通过添加implements Serialiable

关于java - 为什么 Date、BigInteger、Double 等值类应该实现 Serialized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369948/

相关文章:

java - 在 Android 上序列化复杂对象 (Java)

javascript - 如何从 Json.NET 序列化的 JSON 中恢复循环引用(例如 "$id")?

java - 从 REST 访问请求对象

java - 为什么 JVM 不将 "incrementing a int variable"编译为原子获取和递增操作?

java - 如何找到短语的第n个字母,并保留所有的起始字母?

java - 如何在 Jackson 中自定义数组反序列化?

serialization - 如何在 Flask 的 session 中存储 WTForm 表单?

java - Hamcrest allOf() 的签名是错误的吗?

java - Hadoop自定义输出格式,所有reducer什么时候结束?

ruby-on-rails - 如何向在 Rails 中序列化为 JSON 的 ActiveRecord 记录添加额外数据?