多态加泛型是Java提升工具类复用性的核心组合:泛型限定类型范围,多态(接口/抽象类)统一行为契约;通过Validatable接口与泛型方法实现校验复用,借助函数式接口(如Predicate)解耦过滤逻辑,结合策略模式(如Exporter)支持运行时动态扩展,但需注意泛型擦除限制,必要时显式传入Class。

多态加泛型是 Java 里提升工具类复用性的核心组合。关键不在于堆砌语法,而在于让类型约束和行为抽象各司其职:泛型负责“能装什么”,多态(接口/抽象类)负责“能做什么”。
用泛型限定输入范围,用接口统一行为契约
工具方法不直接依赖具体业务类,而是面向接口编程。比如校验逻辑:
- 先定义一个通用能力接口:Validatable,含 boolean isValid() 方法
- 所有需要校验的类(User、Order、Product)都实现它
- 工具方法写成:
boolean validate(T obj) ,编译器既保证传入对象有 isValid(),又避免为每种类型写一遍
泛型方法 + 多态回调,解耦算法与数据
排序、过滤、转换这类操作,逻辑固定但目标对象各异。可把变化点抽成函数式接口:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
- 定义 Comparator
或自定义 Transformer 接口 - 工具方法接收泛型参数 + 回调接口实例,例如:
List filter(List list, Predicate condition) - 调用时传入具体类型(如 List
)和对应判断逻辑(如 u -> u.isActive()),复用同一套过滤骨架
泛型容器 + 多态策略,支持运行时动态扩展
当工具需要适配不同处理逻辑(比如不同格式导出、不同算法计算),可用策略模式配合泛型:
立即学习“Java免费学习笔记(深入)”;
- 声明策略接口:Exporter
,含 byte[] export(List data) - 实现多个子类:JsonExporter
、CsvExporter - 工具类持有一个 Map
> ,注册时用泛型确保类型安全,使用时通过类型擦除外的显式类型传递(如传入 Class)来获取对应策略
注意边界:泛型不能替代运行时类型识别
泛型在编译期擦除,所以不能靠 instanceof T 或 new T[] 做类型分支。需要运行时类型信息时,要显式传入 Class

















