org.nutz.lang 包把许多 JDK 常见操作封装成较短的接口。理解工具类时,既要看它省掉了什么重复,也要看它是否改变了错误、空值和资源释放的语义。以下以 Nutz 1.b.53 为阅读基线。
按职责认识工具
| 工具 | 主要关注 |
|---|---|
| Strings | 字符串判断、转换和拆分 |
| Nums、Maths | 数值处理及计算辅助 |
| Times | 日期解析、格式化与时间范围 |
| Streams | 字节流、字符流和关闭策略 |
| Files | 路径、文件与目录操作 |
| Mirror | 类型、成员、注解和对象创建 |
| Lang | 上下文等通用入口 |
工具方法名越方便,越需要确认边界。例如 readAndClose 与 read 的资源责任不同,路径里的波浪号也不一定由 JDK 自动展开。对框架的约定不能直接推导为 Java 标准行为。
从调用者的问题出发
读取文件时,先看编码与异常;日期转换时,先看时区与线程安全;反射时,先看访问权限和目标类型。再沿一个方法跟到最终的 JDK 调用,判断封装增加了哪些默认值或容错。
拿固定输入比较预期与实际结果,比按工具类行数判断复杂度或价值更可靠。方法多不等于适合所有项目,已有标准 API 满足需求时也不必为了代码短就引入另一套语义。
本系列接下来分别讨论字符串、日期、IO 和反射,让这些基础封装与 JSON、Mapl 等上层模块连接起来。
参考:Nutz 1.b.53 源码。