日常知识通
柔彩主题三 · 更轻盈的阅读体验

Java最新特性,这些更新让你写代码更轻松

发布时间:2025-12-17 18:21:26 阅读:232 次

最近项目里升级了 JDK 17,顺手把 Java 最新的几个特性都用了一遍。以前写一堆模板代码的地方,现在几行就搞定了,开发效率确实提升了不少。

文本块(Text Blocks)让字符串更整洁

以前拼接 HTML 或 JSON 字符串时,各种引号和换行符看得人头疼。现在用三引号(""")直接定义多行文本,格式清晰多了。

String html = \"\"\
<div>
  <p>你好,世界!</p>
</div>\
\"\"\";

像写配置文件或者 SQL 查询的时候,再也不用一行行加 + 号拼接了,维护起来也省心。

switch 表达式支持箭头语法

老版本的 switch 写法容易出错,还要记得写 break。现在可以直接返回值,逻辑更直观。

String dayType = switch (day) {
    case "周一", "周二", "周三", "周四" -> "工作日";
    case "周五" -> "快周末了";
    case "周六", "周日" -> "休息日";
    default -> "无效日期";
};

这种写法在处理用户状态、订单类型的时候特别顺手,代码读起来像自然语言。

记录类(Record)简化数据容器

以前写个 DTO 要写构造函数、getter、equals、hashCode,一通操作下来几十行。现在一个 record 关键字搞定。

record User(String name, int age) { }

// 使用
User user = new User("张三", 28);

像接口传参、数据库查询结果映射这类场景,record 真的是省时又省力。

模式匹配 instanceof 更干净

以前判断类型后还得强转,代码啰嗦。现在可以直接在条件中声明变量。

if (obj instanceof String str) {
    System.out.println("字符串长度:" + str.length());
} else if (obj instanceof Integer num) {
    System.out.println("数值是:" + num);
}

在处理多种消息类型、事件分发时,逻辑一下子清爽了。

密封类(Sealed Classes)控制继承关系

有些类你只想让特定的几个子类继承,比如表示支付方式的抽象类,只允许支付宝、微信、银行卡三种实现。

public sealed abstract class Payment permits Alipay, WeChatPay, BankCard {
}

public final class Alipay extends Payment { }

这样别人就不能随意扩展,API 设计较可控,团队协作也不怕被乱改。

JDK 更新越来越注重开发者体验,很多新特性都是为了解决实际编码中的痛点。如果你还在用老版本,不妨试试升级,说不定哪天写代码就突然觉得“咦,怎么变顺了”。