核心(Hutool-core)自定义类型转换-ConverterRegistry
一、UML类图

hutool类型转换器Convert核心UML类图,
Convert.convert方法最终拿的是ConverterRegistry.convert方法,最终调用Converter接口去convert转换对应类型
所以可以自定义 converter接口,并将它注入到ConverterRegistry,最后调用convert时,指定转换类型,ConverterRegistry会帮我们找到对应类型的转换器
二、示例
自定义转换器
public static class CustomConverter implements Converter
@Override
public String convert(Object value, String defaultValue) throws IllegalArgumentException {
return "Custom: " + value.toString();
}
}
注册转换器
ConverterRegistry converterRegistry = ConverterRegistry.getInstance();
//此处做为示例自定义String转换,因为Hutool中已经提供String转换,请尽量不要替换
//替换可能引发关联转换异常(例如覆盖String转换会影响全局)
converterRegistry.putCustom(String.class, CustomConverter.class);
执行转换
int a = 454553;
String result = converterRegistry.convert(String.class, a);
Assert.assertEquals("Custom: 454553", result);
注意: convert(Class type, Object value, T defaultValue, boolean isCustomFirst)方法的最后一个参数可以选择转换时优先使用自定义转换器还是默认转换器。convert(Class type, Object value, T defaultValue)和convert(Class type, Object value)两个重载方法都是使用自定义转换器优先的模式。

浙公网安备 33010602011771号