lambda表达式可实现通用变量转换器,通过复用function接口、封装空安全工具类、结合stream/map批量处理及构造器引用映射对象,兼顾简洁性与可控性。

用 Lambda 表达式实现通用变量转换器,核心是把“类型A → 类型B”的逻辑抽象成函数式接口,再通过泛型+函数式参数复用转换行为,避免为每对类型写重复的转换方法。
定义通用转换函数接口
Java 自带的 Function
- Function
strToInt = s -> Integer.parseInt(s); - Function
dtToStr = dt -> dt.format(DateTimeFormatter.ISO_DATE); - 所有转换逻辑都是一行 Lambda,语义清晰,无模板代码
封装可复用的转换工具类
将常用转换逻辑集中管理,支持空值安全和异常兜底,避免每个地方重复判空或 try-catch:
- 提供静态方法如 safeConvert(Function
mapper, T source, R defaultValue) - 内部自动处理 source == null 或 mapper.apply() 抛异常的情况
- 例如:safeConvert(Integer::parseInt, "123", -1) 返回 123;传入 null 或非法字符串则返回 -1
结合 Stream 和 Map 批量转换更省力
当面对集合或键值对时,Lambda 转换器能天然融入函数式流水线:
- List
ids = users.stream().map(User::getId).collect(Collectors.toList()); - Map
idToName = users.stream().collect(Collectors.toMap(User::getId, User::getName)); - 所有 map、collect 操作里的 lambda 都是轻量级转换器,不需单独命名方法
扩展支持复杂对象映射(轻量级 DTO 转换)
对字段名一致、结构相近的对象,可用 Lambda 组合构造器引用实现零配置转换:
- Function
toDTO = u -> new UserDTO(u.getId(), u.getName(), u.getEmail()); - 进一步封装为 BeanConverter
工具类,接收 Function构造器 + 字段提取 Lambda,适配简单映射场景 - 比完整 BeanUtils 更可控,比手写 set/get 更简洁,适合微服务间轻量数据透传










