代码对比
✕ Java 8
try {
parse(input);
} catch (Exception ignored) {
log("parse failed");
}
map.forEach((key, value) -> {
process(value); // key unused
});
✓ Java 22+
try {
parse(input);
} catch (Exception _) {
log("parse failed");
}
map.forEach((_, value) -> {
process(value);
});
发现此代码有问题? 告诉我们。
为什么现代方式更好
意图清晰
_ 明确表示"此处不需要这个值"。
无警告
IDE 和 linter 不会标记有意未使用的变量。
更简洁的 lambda
当只需要部分参数时,多参数 lambda 更简洁。
旧方式
未使用变量
现代方式
_ 占位符
自 JDK
22
难度
入门
JDK 支持
用 _ 表示未命名变量
可用
在 JDK 22 中正式发布(JEP 456,2024 年 3 月)。
工作原理
未命名变量向读者和工具传达一个值被刻意忽略的信息。下划线在 Java 22+ 中是保留标识符。
相关文档