当前位置: 首页 > news >正文

JDK-11 | 我为什么越来越喜欢用 Java 的 String/Collection 新 API

这是专栏第 11 篇。
这一篇我不讲单一语法点,而是讲一组“每天都能用到”的 API 升级。

这些能力看起来分散,但我在项目里落地后有一个共同收益:
样板代码更少、边界更清晰、代码审查效率更高。

一、JDK 8 时代的高频样板代码问题

在 JDK 8 项目里,我经常会看到这些重复模式:

  • 字符串判空要trim().isEmpty()组合;
  • 去首尾空白写法不统一(尤其 Unicode 空白);
  • 快速构造只读集合要Collections.unmodifiableXxx(...)
  • 为了不可变快照还要额外复制一遍集合。

这些代码不是难,而是“太多、太碎、太容易风格不一致”。

二、版本信息(关键节点)

常用能力大致分布在 Java 9/10/11:

  • Java 9:List.of/Set.of/Map.of
  • Java 10:copyOf(集合不可变快照)
  • Java 11:String.isBlank/strip/lines/repeat

我在生产里通常以 JDK 17/21 为落地基线,一次性吃到这批能力。

三、这组 API 到底解决了什么

1. 让“意图”直接写在代码里

比如“我要不可变集合”可以直接List.of(...),不再绕多层包装。

2. 减少工具类噪音

以前要依赖各种StringUtils做基础操作,现在很多场景 JDK 原生就够了。

3. 边界行为更统一

例如isBlankstrip对 Unicode 空白处理更一致,减少隐性 bug。

四、适配场景 / 不适配场景

适配场景:

  • 代码库历史包袱重,字符串和集合写法风格分散;
  • 需要快速推广不可变集合,降低共享可变状态风险;
  • 希望减少第三方工具类依赖。

不适配场景:

  • 强依赖可变集合但误用了of/copyOf
  • 旧接口必须接收null元素(of系列不允许);
  • 团队未统一不可变集合的异常处理习惯。

五、从 JDK 8 升级时,我会重点看这 8 件事

1)isBlank与旧判空语义

isBlank()会把全空白字符串判为空白。
如果你旧逻辑只关心长度,要确认语义是否一致。

2)striptrim差异

strip()基于 Unicode 空白,trim()不是。
国际化文本处理里这个差异很关键。

3)List.of不允许null

迁移时如果数据可能含null,会直接抛NullPointerException,要先清洗数据。

4) 不可变集合修改异常

of/copyOf返回不可变集合,后续add/remove会抛UnsupportedOperationException
这不是 bug,是语义边界。

5)copyOf的快照语义

copyOf适合做防御性复制,减少外部修改影响。
迁移时要明确“是共享引用还是不可变快照”。

6) API 替换策略

http://www.jsqmd.com/news/642561/

相关文章:

  • 告别网盘下载烦恼:这款开源助手让你轻松获取八大平台直链
  • 告别“单点突围”:为什么你的数字化转型总是“只见树木,不见森林”?
  • Unity HDRP 2022.3水系统实战:从泳池到海洋,用Shader Graph调出电影级水体效果
  • 阿里系bx-ua补环境实战:从零到一构建可用的Node.js执行环境
  • BGP路由反射器实战解析:从反射簇设计到防环机制的部署与验证
  • 企业专属Agent开发从入门到精通(非常详细),看这篇就够了!
  • 英飞凌Aurix2G TC3XX时钟树配置实战:从20MHz晶振到300MHz主频的MCAL保姆级教程
  • HTTP3 QUIC快速重传机制解析:从丢包检测到高效恢复
  • 清华教授:笑不出来怎么办?五个老祖宗留下的“开心法”,随时都能用
  • # BERT在中文文本分类中的实战优化:从基础模型到高效部署BERT(Bi
  • tools video、PDFka
  • 让你“显老”的5个坏习惯,第一个很多人每天都在做
  • 基于EP4CE22F17C8 FPGA与SDRAM的音频网络开发板硬件设计(原理图+PCB4层板)
  • 一文看懂 Supervisor Agent:为什么很多 Multi-Agent 最后都要回到“一个总控”
  • 从零到自动化:用FastAPI+Requests打造你的第一个接口测试平台(告别Postman手动点点点)
  • **TEE在嵌入式安全中的应用实践:基于ARM TrustZone的加密存储方案设计与实现*
  • 告别卡顿!用PyCharm专业版SSH连接AuToDL云服务器,本地代码远程跑的保姆级教程
  • 万维钢:复利的真正秘密,不是利率,是时间
  • 多智能体协调入门基础教程(非常详细),Anthropic官方出品,看这篇就够了!
  • 冷镦机常见故障原因及解决方法大全(实用版)
  • 告别环境配置焦虑:用VSCode+CMake+MinGW-w64在Windows上快速搞定SDL3开发环境
  • MySQL 基于 GTID 的主从复制搭建步骤
  • fdasdfsdfadsfasdfdasfasdfadsfsadfdsafasadfsdf
  • 【第8期:车机在特定地点(如山上)连接4G网络但部分应用提示“无网络连接”的问题分析与解决方案】
  • HD OPTI
  • 2025-2026年美白防晒霜品牌推荐:TOP10口碑产品评测对比顶尖敏感肌温和不刺激案例 - 品牌推荐
  • HTML头部元信息避坑指南大纲
  • 误操作后电脑不认盘?2026实测排查+修复指南(小白也能上手)
  • 国内半导体行业展会哪家好?优质国内半导体行业展会推动产业合作 - 品牌2026
  • 国家地理将广告牌改造成蜜蜂的活体家园