接口 Converter

所有已知子接口:
DsonConverter
所有已知实现类:
DefaultDsonConverter

@ThreadSafe public interface Converter
Q:如何解决集合和Map的编解码问题? A:为使用到的集合分配TypeMeta,并利用Utils类提供的方法创建对应CollectionCodecMapCodec实例。

Q:如何解决Protobuf的消息编解码问题? A:为使用到的消息分配TypeMeta,并利用Utils类提供的方法创建对应的MessageCodec

Q: factory的作用? A: factory用于支持多态,或将数据读取到既有对象。不过,如果使用了特殊的缓存实现,需考虑线程安全问题。

作者:
wjybxx date 2023/3/31
  • 方法概要

    修饰符和类型
    方法
    说明
    default <T> T
    cloneObject(Object value, TypeInfo<T> typeInfo)
     
    default <T> T
    cloneObject(Object value, TypeInfo<T> typeInfo, Supplier<? extends T> factory)
    克隆一个对象。
    default Object
    read(byte[] source)
     
    default <T> T
    read(byte[] source, TypeInfo<T> typeInfo)
     
    <T> T
    read(byte[] source, TypeInfo<T> typeInfo, Supplier<? extends T> factory)
    从数据源中读取一个对象 注意:如果对象的声明类型和写入的类型不兼容,则表示投影;factory用于支持将数据读取到既有实例或子类实例上。
    default <T> T
    read(DsonChunk chunk, TypeInfo<T> typeInfo)
     
    <T> T
    read(DsonChunk chunk, TypeInfo<T> typeInfo, Supplier<? extends T> factory)
     
    default byte[]
    write(Object value)
     
    byte[]
    write(Object value, TypeInfo<?> typeInfo)
    将一个对象写入源 注意:如果对象的运行时类型和声明类型一致,则可省去编码结果中的类型信息。
    default int
    write(Object value, TypeInfo<?> typeInfo, byte[] buffer)
     
    void
    write(Object value, TypeInfo<?> typeInfo, DsonChunk chunk)
     
  • 方法详细资料

    • write

      byte[] write(Object value, TypeInfo<?> typeInfo)
      将一个对象写入源 注意:如果对象的运行时类型和声明类型一致,则可省去编码结果中的类型信息。
      参数:
      typeInfo - 对象声明类型信息
    • read

      <T> T read(byte[] source, TypeInfo<T> typeInfo, @Nullable Supplier<? extends T> factory)
      从数据源中读取一个对象 注意:如果对象的声明类型和写入的类型不兼容,则表示投影;factory用于支持将数据读取到既有实例或子类实例上。
      参数:
      source - 数据源
      typeInfo - 对象声明类型信息
      factory - 实例工厂
    • write

      void write(Object value, TypeInfo<?> typeInfo, DsonChunk chunk)
      参数:
      value - 要写入的对象
      typeInfo - 对象声明类型信息
      chunk - 二进制块,写入的字节数设置到DsonChunk
    • read

      <T> T read(DsonChunk chunk, TypeInfo<T> typeInfo, @Nullable Supplier<? extends T> factory)
      参数:
      chunk - 二进制块,读取的字节数设置到DsonChunk
      typeInfo - 对象声明类型信息
      factory - 实例工厂
      返回:
      解码结果,顶层对象不应该是null
    • read

      default <T> T read(byte[] source, TypeInfo<T> typeInfo)
    • read

      default <T> T read(DsonChunk chunk, TypeInfo<T> typeInfo)
    • write

      default byte[] write(Object value)
    • read

      default Object read(byte[] source)
    • write

      default int write(Object value, TypeInfo<?> typeInfo, byte[] buffer)
      参数:
      typeInfo - 对象声明类型信息
      buffer - 编码输出
      返回:
      写入的字节数
    • cloneObject

      default <T> T cloneObject(Object value, TypeInfo<T> typeInfo, @Nullable Supplier<? extends T> factory)
      克隆一个对象。 注意: 1.返回值的类型不一定和原始对象相同,这通常发生在集合对象上。 2.如果Codec存在lazyDecode,也会导致不同
      参数:
      typeInfo - 用于确定返回结果类型
      factory - 实例工厂
    • cloneObject

      default <T> T cloneObject(Object value, TypeInfo<T> typeInfo)