java泛型方法接收任意引用类型数组,需声明并用t[]作形参;不能接收int[]等基本类型数组,可改用integer[]等包装类数组;调用时自动推断类型,支持swap、reverse等通用操作。

Java 泛型方法接收任意类型的数组,核心是用类型参数 T 替代具体类型,并将形参声明为 T[]。注意:不能直接接收基本类型数组(如 int[]、double[]),只能接收引用类型数组(如 Integer[]、String[]、Double[] 等)。
泛型方法定义格式要正确
必须在返回类型前加上类型参数声明,例如 <t></t>,然后形参写成 T[] array:
- ✅ 正确写法:
public static <t> void printArray(T[] array)</t> - ❌ 错误写法:
public static void printArray(Object[] array)(失去类型信息,不是泛型) - ❌ 错误写法:
public static <t> void printArray(T array)</t>(没写数组,无法接收数组)
只能传入引用类型数组,不能传基本类型数组
Java 泛型擦除后实际操作的是 Object,而基本类型数组(如 int[])和 Object[] 不兼容,编译会报错:
- ✅ 可以传:
String[]、Integer[]、Boolean[]、MyClass[] - ❌ 不能传:
int[]、char[]、double[](编译失败) - ⚠️ 补救方式:改用包装类数组,例如把
int[]换成Integer[]
调用时类型自动推断,通常无需显式指定
编译器能根据实参类型自动确定 T 是什么,调用简洁自然:
-
printArray(new String[]{"a", "b"});→T推断为String -
printArray(new Integer[]{1, 2, 3});→T推断为Integer - 必要时可显式指定:
GenericUtil.<string>printArray(strArray)</string>(少见,一般不需要)
常见实用例子:交换与翻转
这类操作依赖泛型数组参数,代码复用性高:
- 交换两个位置:
public static <t> void swap(T[] arr, int i, int j)</t> - 反转整个数组:
public static <t> void reverse(T[] arr)</t> - 两者都要求
arr是引用类型数组,内部直接操作元素,无需转型
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











