Java 8 之后有哪些好用特性:switch、文本块、record 和 var

2次阅读
没有评论

很多项目长期停在 Java 8,但 Java 8 之后的版本已经补了不少实用语法。它们不只是“新鲜”,更重要的是减少样板代码,让意图表达得更直接。

switch 表达式减少分支噪音

传统 switch 容易写出大量 casebreak 和临时变量。新的 switch 表达式可以直接返回值,并支持多个条件合并。

String type = switch (day) {
  case 1, 2, 3, 4, 5 -> "workday";
  case 6, 7 -> "weekend";
  default -> "invalid";
};

它适合把枚举、状态和简单分类逻辑写得更清楚。分支复杂到需要大量业务操作时,仍然应该考虑策略模式或拆方法。

文本块适合写 JSON 和 SQL

文本块使用三引号表达多行字符串,适合配置片段、JSON、SQL、HTML 模板等内容。

String json = """
{
  "name": "demo",
  "enabled": true
}
""";

它最大的价值是减少 \n、转义符和字符串拼接,让内容保持原本形状。写测试数据、接口样例、SQL 片段时尤其舒服。

集合工厂让小集合更简洁

Java 9 之后可以用 List.ofSet.ofMap.of 创建不可变小集合。

List<String> names = List.of("a", "b", "c");
Map<String, Integer> scores = Map.of("a", 1, "b", 2);

这类写法适合常量、测试数据和小型配置。需要可变集合时,不要误用不可变集合再在后面 add,否则会抛异常。

record 适合不可变数据载体

record 可以快速定义不可变数据载体,自动生成构造器、访问器、equalshashCodetoString

public record UserView(Long id, String name) {}

它适合 DTO、查询结果、配置项和领域里的值对象。若对象有复杂生命周期、可变状态或大量业务行为,就不一定适合 record。

var 是局部变量推导,不是弱类型

var 只能用于局部变量,编译器仍然会推导出静态类型。

var users = userService.listActiveUsers();

用得好可以减少重复类型噪音;用得过度会让代码读者猜类型。右侧表达式清晰时可以用,链式调用过长或返回类型不明显时,显式类型更好。

接口私有方法让默认方法更可维护

Java 8 引入接口默认方法后,接口里可能出现重复逻辑。后续版本允许接口私有方法,把默认方法之间的公共逻辑抽出来。

这对框架接口、SDK 扩展点比较有用。业务代码里不要把接口写成工具类,接口仍然应该表达契约。

实用结论

Java 8 之后的很多特性都在解决同一件事:让代码更接近业务意图,减少仪式感。

switch 表达式、文本块、集合工厂、record、var、接口私有方法都值得了解。迁移时不用一次性全上,先在测试、DTO、配置和清晰边界里使用,逐步形成团队习惯。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-07-05发表,共计1184字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)