Class JdkSerializer

java.lang.Object
cloud.opencode.base.serialization.binary.JdkSerializer
All Implemented Interfaces:
Serializer

public class JdkSerializer extends Object implements Serializer
JdkSerializer - JDK Native Serialization JDK 原生序列化器

Uses Java's built-in ObjectInputStream/ObjectOutputStream for serialization. Objects must implement Serializable interface.

使用 Java 内置的 ObjectInputStream/ObjectOutputStream 进行序列化。 对象必须实现 Serializable 接口。

Features | 主要功能:

  • No external dependencies - 无外部依赖
  • Full Java type support - 完整的 Java 类型支持
  • Preserves object graph - 保持对象图

Limitations | 限制:

  • Objects must implement Serializable - 对象必须实现 Serializable
  • Larger output size than binary formats - 输出大小比二进制格式大
  • Slower than Kryo or Protobuf - 比 Kryo 或 Protobuf 慢
  • Security concerns with deserialization - 反序列化的安全问题

Usage Examples | 使用示例:

JdkSerializer serializer = new JdkSerializer();

// Serialize
byte[] data = serializer.serialize(user);

// Deserialize
User restored = serializer.deserialize(data, User.class);

Security | 安全性:

  • Thread-safe: Yes (stateless) - 线程安全: 是 (无状态)

Performance | 性能特性:

  • Time complexity: O(n) where n = object graph size - O(n), n为对象图大小
  • Space complexity: O(n) for serialized form - 序列化形式 O(n)
Since:
JDK 25, opencode-base-serialization V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Field Details

  • Constructor Details

    • JdkSerializer

      public JdkSerializer()
  • Method Details

    • serialize

      public byte[] serialize(Object obj)
      Description copied from interface: Serializer
      Serializes an object to byte array. 将对象序列化为字节数组。
      Specified by:
      serialize in interface Serializer
      Parameters:
      obj - the object to serialize - 要序列化的对象
      Returns:
      the serialized bytes - 序列化后的字节数组
    • deserialize

      public <T> T deserialize(byte[] data, Class<T> type)
      Description copied from interface: Serializer
      Deserializes byte array to an object of the specified class. 将字节数组反序列化为指定类的对象。
      Specified by:
      deserialize in interface Serializer
      Type Parameters:
      T - the target type - 目标类型
      Parameters:
      data - the serialized data - 序列化的数据
      type - the target class - 目标类
      Returns:
      the deserialized object - 反序列化后的对象
    • deserialize

      public <T> T deserialize(byte[] data, TypeReference<T> typeRef)
      Description copied from interface: Serializer
      Deserializes byte array to a generic type using TypeReference. 使用 TypeReference 将字节数组反序列化为泛型类型。

      This method preserves generic type information that would otherwise be lost due to type erasure.

      此方法保留了由于类型擦除而丢失的泛型类型信息。

      Specified by:
      deserialize in interface Serializer
      Type Parameters:
      T - the target type - 目标类型
      Parameters:
      data - the serialized data - 序列化的数据
      typeRef - the type reference - 类型引用
      Returns:
      the deserialized object - 反序列化后的对象
    • deserialize

      public <T> T deserialize(byte[] data, Type type)
      Description copied from interface: Serializer
      Deserializes byte array using a Type. 使用 Type 反序列化字节数组。
      Specified by:
      deserialize in interface Serializer
      Type Parameters:
      T - the target type - 目标类型
      Parameters:
      data - the serialized data - 序列化的数据
      type - the target type - 目标类型
      Returns:
      the deserialized object - 反序列化后的对象
    • serialize

      public void serialize(Object obj, OutputStream out)
      Writes directly to the output stream, avoiding the intermediate byte[] allocation. 直接写入输出流,避免中间 byte[] 分配。
      Specified by:
      serialize in interface Serializer
      Parameters:
      obj - the object to serialize | 要序列化的对象
      out - the output stream | 输出流
    • deserialize

      public <T> T deserialize(InputStream in, Class<T> type)
      Reads directly from the input stream, avoiding the readLimited -> byte[] -> ByteArrayInputStream double-copy. 直接从输入流读取,避免 readLimited -> byte[] -> ByteArrayInputStream 的双拷贝。
      Specified by:
      deserialize in interface Serializer
      Type Parameters:
      T - the target type | 目标类型
      Parameters:
      in - the input stream | 输入流
      type - the target class | 目标类
      Returns:
      the deserialized object | 反序列化后的对象
    • getFormat

      public String getFormat()
      Description copied from interface: Serializer
      Returns the format name of this serializer. 返回此序列化器的格式名称。

      Examples: "json", "xml", "kryo", "protobuf", "jdk"

      示例: "json", "xml", "kryo", "protobuf", "jdk"

      Specified by:
      getFormat in interface Serializer
      Returns:
      the format name - 格式名称
    • getMimeType

      public String getMimeType()
      Description copied from interface: Serializer
      Returns the MIME type for this serializer. 返回此序列化器的 MIME 类型。
      Specified by:
      getMimeType in interface Serializer
      Returns:
      the MIME type (default: "application/octet-stream") - MIME 类型
    • supports

      public boolean supports(Class<?> type)
      Description copied from interface: Serializer
      Checks if this serializer supports the given type. 检查此序列化器是否支持给定类型。

      Some serializers have specific type requirements.

      某些序列化器有特定的类型要求。

      Specified by:
      supports in interface Serializer
      Parameters:
      type - the type to check - 要检查的类型
      Returns:
      true if supported - 如果支持则返回 true