Skip to content

类型转换器

crane4j 中有不少需要通过反射调用有参方法的场景,包括且不限于:

  • 在字段映射时调用的 setter 方法;
  • 从方法数据源容器调用适配方法以获取数据源;
  • 调用操作接口以填充对象的参数;

这些方法底层都依赖于类型转换器管理器 ConverterManager 来实现参数的自动转换。换句话说,如果方法的参数类型是 A,而输入的参数类型是 B,ConverterManager 将会自动尝试将 B 转换为 A 类型。

ConverterManager 目前提供了三套实现:

转换器说明使用情况
SimpleConverterManager直接通过 (R)t 这种方式强转,作用有限基本只在测试用例中使用
HutoolConverterManager基于 Hutool 的 Convert 实现,参见 Hutool 参考文档中的 自定义类型转换-ConverterRegistry 一节在非 Spring 环境中使用
SpringConverterManager基于 Spring 的 ConversionService 实现,功能强大在 Spring 环境下使用

基于此,如果你要添加新的类型转换器,那么在 Spring 环境,你只需要与 Spring 对接,而在非 Spring 环境,你只需要与 Hutool 对接。

不过,你也可以实现 ConverterManager 接口,定义你的自己的类型转换器。