类型转换 - ConversionService
概述
ConversionService 提供了统一、可扩展的类型转换框架,解决类型转换的重复代码问题。
核心能力矩阵
| 能力 | 核心类 | 解决的问题 | 使用频率 | 学习优先级 |
|---|---|---|---|---|
| 类型转换 | ConversionService | 类型转换重复代码 | ⭐⭐⭐⭐ | 🟡 中 |
设计目标
- 统一的类型转换接口
- 可扩展的转换器注册机制
- 支持泛型类型的转换
- 内置常用类型转换器
核心架构
主要功能
1. 简单类型转换
java
ConversionService service = new DefaultConversionService();
// 基本类型转换
Integer num = service.convert("123", Integer.class);
Long longNum = service.convert("456", Long.class);
Boolean flag = service.convert("true", Boolean.class);2. 集合类型转换
java
// 集合转换
List<String> list = service.convert("a,b,c", List.class);
Integer[] arr = service.convert(new String[]{"1", "2", "3"}, Integer[].class);3. 自定义转换器
java
// 定义转换器
public class StringToDateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
return new SimpleDateFormat("yyyy-MM-dd").parse(source);
}
}
// 注册转换器
DefaultConversionService service = new DefaultConversionService();
service.addConverter(new StringToDateConverter());
// 使用转换器
Date date = service.convert("2024-01-15", Date.class);内置转换器
| 转换器 | 源类型 | 目标类型 |
|---|---|---|
StringToIntegerConverter | String | Integer |
StringToLongConverter | String | Long |
StringToBooleanConverter | String | Boolean |
StringToNumberConverterFactory | String | Number |
StringToCollectionConverter | String | Collection |
ArrayToCollectionConverter | Array | Collection |
使用场景
- 数据绑定
- 配置属性转换
- 请求参数转换
- 响应数据格式化