高内聚静态工具类必须满足三硬性约束:类声明为final、构造函数私有并抛出unsupportedoperationexception、所有方法为public static;命名须以utils结尾且职责单一,方法名动词开头语义明确;实现须无状态,禁用static可变字段,参数校验前置,保持轻量扁平。

高内聚的静态工具类不是堆砌方法,而是让每个类只专注解决一类问题,调用清晰、行为确定、无隐藏依赖。
类设计必须满足三个硬性约束
这是避免后期维护失控的基础门槛:
- 类声明为 final,禁止继承——防止子类篡改或覆盖静态方法,破坏调用契约
- 构造函数私有且抛出 UnsupportedOperationException(或 AssertionError),明确拒绝实例化
- 所有方法均为 public static,不引用
this、不访问任何非静态成员
命名与职责必须严格对齐
名字是接口的第一印象。一个工具类不该让人猜它能做什么:
- 类名以 Utils 结尾,如
JsonUtils、NumberUtils,避免CommonUtils这类泛称 - 每个类只处理单一领域:字符串、日期、集合、IO、数学运算等,不可混装
- 方法名用动词开头,语义直白,比如
isBlank()、parseLongSafely()、toCamelCase()
方法实现要守住“无状态”底线
静态工具方法本质是纯函数——输入决定输出,不读写外部可变状态:
- 禁止使用 static 可变字段(如计数器、缓存 Map、配置开关),它们会引发线程安全问题和测试隔离困难
- 若需缓存(如正则 Pattern),优先复用 JDK 内置机制(
Pattern.compile()在 JDK 7+ 已自带轻量缓存),而非自行维护 - 参数校验前置:用
Objects.requireNonNull()或显式判空,失败时抛 IllegalArgumentException,不静默返回默认值
保持轻量,拒绝过度封装
工具方法的价值在于“一眼看懂、随手就用”,不是构建 mini 框架:
- 方法参数尽量扁平,避免传入 Builder、Config 对象或自定义上下文类
- 不提供“万能重载”:比如
format(Object, String, Locale, TimeZone),应拆为多个语义明确的独立方法 - 常量仅限真正通用的配置项,如
public static final String DEFAULT_CHARSET = "UTF-8";,不放业务相关变量
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











