类 AbstractDsonCodec<T>

java.lang.Object
cn.wjybxx.dsoncodec.AbstractDsonCodec<T>
所有已实现的接口:
DsonCodec<T>

public abstract class AbstractDsonCodec<T> extends Object implements DsonCodec<T>
生成的代码会继承该类
作者:
wjybxx date 2023/4/4
  • 构造器详细资料

    • AbstractDsonCodec

      public AbstractDsonCodec()
  • 方法详细资料

    • getEncoderClass

      @Nonnull public abstract Class<T> getEncoderClass()
      从接口复制的说明: DsonCodec
      获取负责编解码的类对象
      指定者:
      getEncoderClass 在接口中 DsonCodec<T>
    • autoStartEnd

      public boolean autoStartEnd()
      从接口复制的说明: DsonCodec
      该方法用于告知DsonCodecImpl是否自动调用以下方法: DsonObjectWriter.writeStartObject(String, Object, TypeInfo) ()} DsonObjectWriter.writeEndObject() DsonObjectReader.readStartObject(String) DsonObjectReader.readEndObject()

      Q:禁用该属性有什么用? A: 对于写;你可以将当前转换为另一个对象,然后再使用对应的codec进行编码;对于读:你可以使用另一个codec来解码当前二进制对象。 即:关闭该属性可以实现读替换(readReplace)和写替换(writeReplace)功能。 另外,还可以自行决定是写为Array还是Object。

      指定者:
      autoStartEnd 在接口中 DsonCodec<T>
    • isWriteAsArray

      public boolean isWriteAsArray()
      从接口复制的说明: DsonCodec
      当前对象是否按照数组格式编码 1.默认情况下,Map是被看做普通的数组的 2.该属性只有DsonCodec.autoStartEnd() 为true的时候有效。
      指定者:
      isWriteAsArray 在接口中 DsonCodec<T>
    • writeObject

      public void writeObject(DsonObjectWriter writer, T instance, TypeInfo<?> typeInfo, ObjectStyle style)
      从接口复制的说明: DsonCodec
      将对象写入输出流。 将对象及其所有超类定义的所有要序列化的字段写入输出流。

      注意:name在外部已写入,因此基础类型写入value时name传null或空字符串。

      指定者:
      writeObject 在接口中 DsonCodec<T>
      参数:
      typeInfo - 对象的类型信息(声明类型)
      style - 外部期望的输出格式
    • beforeEncode

      protected void beforeEncode(DsonObjectWriter writer, T instance, TypeInfo<?> typeInfo, ObjectStyle style)
      用于执行用户的beforeEncode钩子方法。 通常用于数据转换。
    • writeFields

      public abstract void writeFields(DsonObjectWriter writer, T instance, TypeInfo<?> typeInfo, ObjectStyle style)
    • readObject

      public T readObject(DsonObjectReader reader, TypeInfo<?> typeInfo, Supplier<? extends T> factory)
      从接口复制的说明: DsonCodec
      从输入流中解析指定对象。 它应该创建对象,并反序列化该类及其所有超类定义的所有要序列化的字段。

      注意:name在外部已读取,因此读取value时使用DsonObjectReader.getCurrentName()

      指定者:
      readObject 在接口中 DsonCodec<T>
      参数:
      typeInfo - 对象的类型信息(声明类型)
      factory - 实例工厂
    • newInstance

      protected abstract T newInstance(DsonObjectReader reader, TypeInfo<?> typeInfo)
      创建一个对实例。 1.如果是一个抽象类,应该抛出异常。 2.该方法可解决final字段问题。
      返回:
      可以是子类实例
    • readFields

      public abstract void readFields(DsonObjectReader reader, T instance, TypeInfo<?> typeInfo)
      从输入流中读取所有序列化的字段到指定实例上。
      参数:
      instance - 可以是子类实例
    • afterDecode

      protected void afterDecode(DsonObjectReader reader, T instance, TypeInfo<?> typeInfo)
      用于执行用户的afterDecode钩子方法。 通常用于数据转换。