类 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()
  • 方法详细资料

    • getEncoderType

      @Nonnull public abstract TypeInfo getEncoderType()
      从接口复制的说明: DsonCodec
      获取负责编解码的类对象 如果可以,在数据兼容的情况下,尽量将泛型'T'声明为抽象类或接口,然后通过动态的TypeInfo来绑定编解码类型。 EncoderType必须存在对应的TypeMeta
      指定者:
      getEncoderType 在接口中 DsonCodec<T>
    • writeObject

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

      注意: 1.name在外部已写入,因此基础类型写入value时name传null。 2.declaredType只影响外层类型信息是否写入,而不应向下传递。以字典为例,KV是否需要写入类型信息,取决于encoderType中的信息。

      指定者:
      writeObject 在接口中 DsonCodec<T>
      参数:
      declaredType - 声明类型,用于判断是否写入类型信息
      style - 外部期望的输出格式
    • beforeEncode

      protected void beforeEncode(DsonObjectWriter writer, T inst)
      用于执行用户的beforeEncode钩子方法。 通常用于数据转换。
    • writeFields

      public abstract void writeFields(DsonObjectWriter writer, T inst)
    • readObject

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

      注意:name在外部已读取,因此基础类型读取value时name传null。

      指定者:
      readObject 在接口中 DsonCodec<T>
      参数:
      factory - 实例工厂
    • newInstance

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

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

      protected void afterDecode(DsonObjectReader reader, T inst)
      用于执行用户的afterDecode钩子方法。 通常用于数据转换。