- 所有已知子接口:
DsonConverter
- 所有已知实现类:
DefaultDsonConverter
@ThreadSafe
public interface Converter
Q:如何解决集合和Map的编解码问题?
A:为使用到的集合分配
TypeMeta,并利用Utils类提供的方法创建对应CollectionCodec和MapCodec实例。
Q:如何解决Protobuf的消息编解码问题?
A:为使用到的消息分配TypeMeta,并利用Utils类提供的方法创建对应的MessageCodec。
Q: factory的作用? A: factory用于支持多态,或将数据读取到既有对象。不过,如果使用了特殊的缓存实现,需考虑线程安全问题。
- 作者:
- wjybxx date 2023/3/31
-
方法概要
修饰符和类型方法说明default <T> TcloneObject(Object value, TypeInfo<T> typeInfo) default <T> TcloneObject(Object value, TypeInfo<T> typeInfo, Supplier<? extends T> factory) 克隆一个对象。default Objectread(byte[] source) default <T> T<T> T从数据源中读取一个对象 注意:如果对象的声明类型和写入的类型不兼容,则表示投影;factory用于支持将数据读取到既有实例或子类实例上。default <T> T<T> Tdefault byte[]byte[]将一个对象写入源 注意:如果对象的运行时类型和声明类型一致,则可省去编码结果中的类型信息。default intvoid
-
方法详细资料
-
write
将一个对象写入源 注意:如果对象的运行时类型和声明类型一致,则可省去编码结果中的类型信息。- 参数:
typeInfo- 对象声明类型信息
-
read
从数据源中读取一个对象 注意:如果对象的声明类型和写入的类型不兼容,则表示投影;factory用于支持将数据读取到既有实例或子类实例上。- 参数:
source- 数据源typeInfo- 对象声明类型信息factory- 实例工厂
-
write
- 参数:
value- 要写入的对象typeInfo- 对象声明类型信息chunk- 二进制块,写入的字节数设置到DsonChunk
-
read
- 参数:
chunk- 二进制块,读取的字节数设置到DsonChunktypeInfo- 对象声明类型信息factory- 实例工厂- 返回:
- 解码结果,顶层对象不应该是null
-
read
-
read
-
write
-
read
-
write
- 参数:
typeInfo- 对象声明类型信息buffer- 编码输出- 返回:
- 写入的字节数
-
cloneObject
default <T> T cloneObject(Object value, TypeInfo<T> typeInfo, @Nullable Supplier<? extends T> factory) 克隆一个对象。 注意: 1.返回值的类型不一定和原始对象相同,这通常发生在集合对象上。 2.如果Codec存在lazyDecode,也会导致不同- 参数:
typeInfo- 用于确定返回结果类型factory- 实例工厂
-
cloneObject
-