类 EnumCodec<T extends Enum<T>>

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

public final class EnumCodec<T extends Enum<T>> extends Object implements IEnumCodec<T>
枚举编解码器 如果枚举实现了EnumLite接口,则序列化时使用自定义数字,否则使用Enum.ordinal()
作者:
wjybxx date - 2023/4/24
  • 构造器详细资料

    • EnumCodec

      public EnumCodec(Class<T> enumClass, List<EnumValueInfo<T>> valueInfos)
      参数:
      enumClass - 枚举类
      valueInfos - 枚举值信息,允许自定义枚举序列化数据
    • EnumCodec

      public EnumCodec(Class<T> enumClass)
  • 方法详细资料

    • forName

      @Nullable public T forName(String name)
      指定者:
      forName 在接口中 IEnumCodec<T extends Enum<T>>
    • forNumber

      @Nullable public T forNumber(int number)
      指定者:
      forNumber 在接口中 IEnumCodec<T extends Enum<T>>
    • getName

      public String getName(T val)
      指定者:
      getName 在接口中 IEnumCodec<T extends Enum<T>>
    • getNumber

      public int getNumber(T val)
      指定者:
      getNumber 在接口中 IEnumCodec<T extends Enum<T>>
    • getEncoderType

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

      public boolean autoStartEnd()
      false 可以将枚举简单写为整数
      指定者:
      autoStartEnd 在接口中 DsonCodec<T extends Enum<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 extends Enum<T>>
      参数:
      declaredType - 声明类型,用于判断是否写入类型信息
      style - 外部期望的输出格式
    • readObject

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

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

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