接口 DsonCodecCaster


public interface DsonCodecCaster
当要编码的对象类型不存在直接的Codec时,该方法用于转换编解码类型。

1.该接口是从DsonCodecRegistry的逻辑中分离出来的,可更好的处理类型转换冲突。 2.不必考虑效率问题,结果会被缓存。 3.需保证线程安全性,因此建议实现为无状态的。

作者:
wjybxx date - 2024/9/28
  • 方法概要

    修饰符和类型
    方法
    说明
    cn.wjybxx.base.TypeInfo
    castDecoderType(cn.wjybxx.base.TypeInfo type)
    转换解码类型 1.可以返回子类的Codec,如果子类和当前类数据兼容。
    cn.wjybxx.base.TypeInfo
    castEncoderType(cn.wjybxx.base.TypeInfo type)
    转换编码类型 1.可以向上转换,因为子类实例可以向上转型,但子类特殊数据将被丢弃。
  • 方法详细资料

    • castEncoderType

      @Nullable cn.wjybxx.base.TypeInfo castEncoderType(cn.wjybxx.base.TypeInfo type)
      转换编码类型 1.可以向上转换,因为子类实例可以向上转型,但子类特殊数据将被丢弃。 2.不可向下转换,因为超类实例不能向下转型。 3.泛型参数的转换由用户处理,尽量转换为具有相同泛型参数的类型。 4.转换后的类型必须存在对应的Codec和TypeMeta。 5.集合类型通常转换为其对应的接口类型。
      参数:
      type - 要转换的类,泛型类的话是泛型定义类
      返回:
      要转换的编码类型;null表示找不到合适的类型,将继续查找下一个;返回参数表示中断查询
    • castDecoderType

      @Nullable cn.wjybxx.base.TypeInfo castDecoderType(cn.wjybxx.base.TypeInfo type)
      转换解码类型 1.可以返回子类的Codec,如果子类和当前类数据兼容。 2.不可向上转型,因为超类Codec创建的实例不能安全向下转型。 3.泛型参数的转换由用户处理,尽量转换为具有相同泛型参数的类型。 4.转换后的类型必须存在对应的Codec和TypeMeta。
      参数:
      type - 要转换的类,泛型类的话是泛型定义类
      返回:
      要转换的解码类型;null表示找不到合适的类型,将继续查找下一个;返回参数表示中断查询