java 12起string新增transform实例方法,接收function

Java 中并没有名为 transform 的内置方法直接作用于 String 类型。自 Java 12 起,String 类新增了 transform 方法,但它是一个 实例方法,接收一个 Function super String, ? extends R> 函数式接口,用于对字符串进行不可变转换并返回新结果(可以是任意类型,不一定是 String)。
transform 方法的基本用法
该方法不会修改原字符串(String 本身不可变),而是将当前字符串作为输入,交给传入的函数处理,并返回函数的计算结果:
- 签名:
public <r> R transform(Function super String, ? extends R> f)</r> - 参数必须是
Function,比如s -> s.toUpperCase()、String::length等 - 返回值类型由函数决定,可以是
String、Integer、自定义对象等
常见转换场景示例
✅ 转为大写(返回 String):
String result = "hello".transform(s -> s.toUpperCase()); // "HELLO"
✅ 获取长度(返回 Integer):
int len = "world".transform(String::length); // 5
✅ 解析为整数(需注意异常):
Integer num = "123".transform(Integer::parseInt); // 123
⚠️ 注意:如果函数抛出异常(如空字符串转 int),transform 会原样传播该异常。
与传统方式对比
过去常用链式调用(如 "abc".toUpperCase().trim()),但无法灵活转成非 String 类型;而 transform 统一抽象了“基于字符串做一次计算”的模式,更函数式、更通用。它不是替代 map 或 Stream,而是为单个字符串提供简洁的转换入口。
使用前提和注意事项
- 仅支持 Java 12 及以上版本
- 传入的 Function 不应为 null,否则抛出
NullPointerException - 原字符串为 null 时会触发 NPE(调用前建议判空)
- 适合简单、一次性的转换逻辑;复杂处理仍推荐显式变量或 Stream
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











