泛型方法声明需在返回类型前用尖括号声明类型参数(如),调用时编译器自动推断或显式指定;t仅在方法内有效,静态方法必须独立声明泛型,不可用类泛型;注意类型擦除、不可用基本类型、需边界限定等限制。

Java 泛型方法的声明和调用核心就两点:在返回类型前加类型参数声明(如
泛型方法怎么声明
声明泛型方法必须把类型参数写在返回类型前面,用尖括号包裹,格式是:public
- T 可以出现在参数类型、返回类型、局部变量类型甚至异常类型中
- 多个类型参数用逗号分隔,比如
、 - 泛型方法的类型参数只在该方法体内有效,不影响所在类的其他部分
- 静态方法若需使用泛型,必须声明为泛型方法;不能直接用类的泛型参数(因为静态上下文不依赖实例)
泛型方法怎么调用
绝大多数情况下,编译器能根据实参类型自动推断出 T 是什么,不需要手动指定。
- 例如 printValue("hello") → 推断 T 是 String;printValue(42) → 推断 T 是 Integer(自动装箱)
- 当无法推断或需要明确指定时,可显式写出类型: Util.
compare(p1, p2) - 数组操作类方法(如 swap)常靠传入的数组类型确定 T,比如 swap(new String[]{...}) → T 就是 String
常见注意事项
写泛型方法容易踩几个坑,注意避开:
- 不能用基本类型作为类型参数,只能用包装类(int → Integer,boolean → Boolean)
- 泛型信息在运行时被擦除(type erasure),所以不能用 instanceof 判断 T 的具体类型,也不能 new T()
- 如果方法逻辑依赖类型的特定行为(比如要调用 toString() 或 compareTo()),建议加上边界限定,例如
> - 泛型方法和普通重载方法共存时,编译器优先选择最具体的匹配,要注意签名冲突
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











