核心(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)两个重载方法都是使用自定义转换器优先的模式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库