泛型方法通过在返回类型前声明实现独立于类的跨类型复用,支持类型推断、extends约束(如comparable)、通配符(? extends number)及静态方法需自行声明类型参数。

泛型方法通过在返回类型前单独声明类型参数,让方法逻辑脱离所在类的泛型上下文,实现真正独立、跨类型的复用。它不依赖外部类是否泛型,也不绑定某个固定类型,只关注当前方法需要处理的数据契约。
泛型方法的基本定义与调用方式
在方法返回类型前加
- 写法示例:public static
void printAll(T[] arr) ,可传入 String[]、Integer[]、LocalDate[] 等任意引用类型数组 - 调用时直接写 printAll(new String[]{"a", "b"}),编译器识别为 printAll
- 若需指定类型(如推断失败或含泛型嵌套),可显式写出:Util.
max(list)
用 extends 添加类型约束提升实用性
仅用 T 无法调用特定方法(如 compareTo、doubleValue)。加上上界约束后,就能安全使用共通行为。
-
> :保证 T 支持比较,方法内可调用 t1.compareTo(t2) -
:要求 T 同时实现两个接口,支持序列化与克隆 - 实际应用:public static
double sum(List ,内部可调用 n.doubleValue()numbers)
配合通配符增强参数兼容性
当方法只读取、不修改数据,或需接受多种子类型时,用通配符比裸 T 更灵活且安全。
- List>:接收任意 List,但不能 add(除 null),适合遍历、统计等只读操作
- List extends Number>:只接受 Number 及其子类(Integer、Double 等),可安全调用 doubleValue()
-
List super Integer>:只接受 Integer 的父类集合(如 List
或 List
注意静态方法必须自行声明类型参数
静态方法属于类而非实例,无法访问外部类的泛型参数。即使类本身是泛型,静态泛型方法也必须自己带
- 错误写法:public static void wrong(List
list) (T 未声明) - 正确写法:public static
void right(List list) - 常见误区:误以为 class Box
中的静态方法能直接用 T,实际必须重新声明
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











