Class JdkSerializer
java.lang.Object
cloud.opencode.base.serialization.binary.JdkSerializer
- All Implemented Interfaces:
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 Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<T> Tdeserialize(byte[] data, TypeReference<T> typeRef) Deserializes byte array to a generic type using TypeReference.<T> Tdeserialize(byte[] data, Class<T> type) Deserializes byte array to an object of the specified class.<T> Tdeserialize(byte[] data, Type type) Deserializes byte array using a Type.<T> Tdeserialize(InputStream in, Class<T> type) Reads directly from the input stream, avoiding the readLimited -> byte[] -> ByteArrayInputStream double-copy.Returns the format name of this serializer.Returns the MIME type for this serializer.byte[]Serializes an object to byte array.voidserialize(Object obj, OutputStream out) Writes directly to the output stream, avoiding the intermediate byte[] allocation.booleanChecks if this serializer supports the given type.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Serializer
deserialize, info, isTextBased
-
Field Details
-
FORMAT
-
-
Constructor Details
-
JdkSerializer
public JdkSerializer()
-
-
Method Details
-
serialize
Description copied from interface:SerializerSerializes an object to byte array. 将对象序列化为字节数组。- Specified by:
serializein interfaceSerializer- Parameters:
obj- the object to serialize - 要序列化的对象- Returns:
- the serialized bytes - 序列化后的字节数组
-
deserialize
Description copied from interface:SerializerDeserializes byte array to an object of the specified class. 将字节数组反序列化为指定类的对象。- Specified by:
deserializein interfaceSerializer- Type Parameters:
T- the target type - 目标类型- Parameters:
data- the serialized data - 序列化的数据type- the target class - 目标类- Returns:
- the deserialized object - 反序列化后的对象
-
deserialize
Description copied from interface:SerializerDeserializes 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:
deserializein interfaceSerializer- Type Parameters:
T- the target type - 目标类型- Parameters:
data- the serialized data - 序列化的数据typeRef- the type reference - 类型引用- Returns:
- the deserialized object - 反序列化后的对象
-
deserialize
Description copied from interface:SerializerDeserializes byte array using a Type. 使用 Type 反序列化字节数组。- Specified by:
deserializein interfaceSerializer- Type Parameters:
T- the target type - 目标类型- Parameters:
data- the serialized data - 序列化的数据type- the target type - 目标类型- Returns:
- the deserialized object - 反序列化后的对象
-
serialize
Writes directly to the output stream, avoiding the intermediate byte[] allocation. 直接写入输出流,避免中间 byte[] 分配。- Specified by:
serializein interfaceSerializer- Parameters:
obj- the object to serialize | 要序列化的对象out- the output stream | 输出流
-
deserialize
Reads directly from the input stream, avoiding the readLimited -> byte[] -> ByteArrayInputStream double-copy. 直接从输入流读取,避免 readLimited -> byte[] -> ByteArrayInputStream 的双拷贝。- Specified by:
deserializein interfaceSerializer- Type Parameters:
T- the target type | 目标类型- Parameters:
in- the input stream | 输入流type- the target class | 目标类- Returns:
- the deserialized object | 反序列化后的对象
-
getFormat
Description copied from interface:SerializerReturns the format name of this serializer. 返回此序列化器的格式名称。Examples: "json", "xml", "kryo", "protobuf", "jdk"
示例: "json", "xml", "kryo", "protobuf", "jdk"
- Specified by:
getFormatin interfaceSerializer- Returns:
- the format name - 格式名称
-
getMimeType
Description copied from interface:SerializerReturns the MIME type for this serializer. 返回此序列化器的 MIME 类型。- Specified by:
getMimeTypein interfaceSerializer- Returns:
- the MIME type (default: "application/octet-stream") - MIME 类型
-
supports
Description copied from interface:SerializerChecks if this serializer supports the given type. 检查此序列化器是否支持给定类型。Some serializers have specific type requirements.
某些序列化器有特定的类型要求。
- Specified by:
supportsin interfaceSerializer- Parameters:
type- the type to check - 要检查的类型- Returns:
- true if supported - 如果支持则返回 true
-