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 - 反序列化后的对象
    • 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. For example, ProtobufSerializer only supports Protobuf Message types.

      某些序列化器有特定的类型要求。 例如,ProtobufSerializer 仅支持 Protobuf Message 类型。

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