Java泛型静态方法必须在static后、返回类型前显式声明类型参数,如public static T getValue(T defaultValue);静态方法无法访问类的泛型参数,需独立声明;支持多参数及extends边界限定;调用时可类型推断或显式指定,如Util.convert(42)。

Java 泛型静态方法使用类型参数,核心是**在 static 关键字后、返回类型前显式声明自己的泛型参数**,这个参数与类是否泛型、类用什么泛型完全无关。
必须把 写在 static 和 返回类型之间
这是语法硬性要求,缺一不可:
- 正确写法:public static
T getValue(T defaultValue) - 错误写法:public static T getValue(T defaultValue)(缺少
声明) - 错误写法:public
static T getValue(...) (不能放在 static 后面)
静态方法不能用类的泛型参数
即使类本身是泛型,它的静态方法也看不到类的类型变量:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 比如 class Box { public static void f(U u) {...} } → 编译失败,U 不可见
- 正确做法是:在方法上重新声明,例如 public static
E createDefault() ,这里的 E 是方法自己的 - 类泛型 U 和方法泛型 E 可以同名,但方法里的 E 会覆盖 U,容易混淆,建议用不同名字
支持多参数和边界限定
一个方法可以声明多个类型参数,也能加 extends 限制实际传入类型:
立即学习“Java免费学习笔记(深入)”;
- 两个无约束参数:public static
Map newMap() - 单个有界参数:public static
> T max(T a, T b) - 多重边界(一个类 + 多个接口):public static
void runIfNumber(T t)
调用时可推断,也可显式指定
大多数时候编译器能自动判断类型,但某些场景需要手动点名:
- 自动推断:String s = identity("hello"); → 推出 T 是 String
- 显式指定:Double d = Util.
convert(42); (注意写法:类名.<Type>方法名) - 不能写成 Util.convert
(42) ,那是语法错误

















